Witam,
Zacznę od tego że moje doświadczenia z SQLem ograniczają się do poziomu MySQL i na ów SQL radzę sobie bardzo dobrze. Jednak z MS SQL już nie, dlatego proszę o pomoc w rozwiązaniu mojego problemu.
Komunikat jaki się pokazuje to:
Each GROUP BY expression must contain at least one column that is not an outer reference.
Rozumiem, że nie może być żadnej referencji zewnętrznej, ale co jeżeli chce grupować właśnie takiej kolumnie?
Celem jest zsumowanie wartosci sprzedazy, kosztów i zysków z danych miesięcy, dla dokumentu z zawartoscia INTERNET, a w przyszłości także innych.
SELECT
MAX(dataZamowienia) miesiacRozliczeniowy
,COUNT(1) liczbaZamowien
,SUM(CenatowarowNETTO) WartoscSprzedazyNETTO
,SUM(kosztyNETTO) KosztySprzedazyNETTO
,SUM(zyskNETTO) ZyskSprzedazyNETTO
FROM (
SELECT *, (CenatowarowNETTO - kosztyNETTO) zyskNETTO
FROM (
SELECT
MAX(Dok.dok_WartTwNetto) CenatowarowNETTO
,SUM(Poz.ob_Ilosc * Poz.ob_CenaMag) kosztyNETTO
,MAX(FORMAT(Dok.dok_DataMag, 'yyyy-MM')) dataZamowienia
FROM dok_Pozycja Poz
LEFT JOIN dok__Dokument Dok ON Poz.ob_DokHanId = Dok.dok_Id
WHERE
UPPER(Dok.dok_NrPelnyOryg) LIKE '%INTERNET%'
AND Poz.ob_CenaMag > 0
AND Dok.dok_DataMag BETWEEN '2017-06-01 00:00:00' AND '2017-06-30 00:00:00'
GROUP BY Poz.ob_DokHanId
) a
) b
GROUP BY dataZamowienia;
Zapytanie SQL zostało poprawione.