Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Subiekt] Zestawienie zamówień, Zestawienie miesięczne wartosci, kosztów i zysków sprzedaży
Tomplus
post 6.06.2017, 11:45:09
Post #1





Grupa: Zarejestrowani
Postów: 1 828
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Zaczynam zabawę z MS SQL, ale ledwo co, to na każdym kroku mam jakieś problemy które dużo prościej rozwiązuje się na MySQL. Więc postanowiłem napocić trochę treści tutaj :)
Proszę więc o pomoc w sprawie rozwiązania problemu a zarazem wskazanie rozwiązania, abym mógł rozwiązać taki problem w innych przypadkach.

Komunikat jaki się pokazuje to:
Kod
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.

  1. SELECT
  2. MAX(dataZamowienia) miesiacRozliczeniowy
  3. ,COUNT(1) liczbaZamowien
  4. ,SUM(CenatowarowNETTO) WartoscSprzedazyNETTO
  5. ,SUM(kosztyNETTO) KosztySprzedazyNETTO
  6. ,SUM(zyskNETTO) ZyskSprzedazyNETTO
  7.  
  8. FROM (
  9. SELECT *, (CenatowarowNETTO - kosztyNETTO) zyskNETTO
  10. FROM (
  11. SELECT
  12. MAX(Dok.dok_WartTwNetto) CenatowarowNETTO
  13. ,SUM(Poz.ob_Ilosc * Poz.ob_CenaMag) kosztyNETTO
  14. ,MAX(FORMAT(Dok.dok_DataMag, 'yyyy-MM')) dataZamowienia
  15. FROM dok_Pozycja Poz
  16. LEFT JOIN dok__Dokument Dok ON Poz.ob_DokHanId = Dok.dok_Id
  17. WHERE
  18. UPPER(Dok.dok_NrPelnyOryg) LIKE '%INTERNET%'
  19. AND Poz.ob_CenaMag > 0
  20. AND Dok.dok_DataMag BETWEEN '2017-06-01 00:00:00' AND '2017-06-30 00:00:00'
  21. GROUP BY Poz.ob_DokHanId
  22. ) a
  23. ) b
  24. GROUP BY dataZamowienia;


Problem z zapytaniem został rozwiązany.

Błędem były apostrofy oraz alias dla grupowania.
Poprawiłem zapytanie, może komuś się przyda.

Do zamknięcia.

Ten post edytował Tomplus 6.06.2017, 11:56:30
Go to the top of the page
+Quote Post
nospor
post 6.06.2017, 11:47:47
Post #2





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




A wlasnie mialem pisac, ze chyba "troche" przedobrzyles z tymi apostrofami wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Tomplus
post 6.06.2017, 11:58:57
Post #3





Grupa: Zarejestrowani
Postów: 1 828
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Dobrze powiedziane, że trochę.
I jeszcze pomyliłem apostrofy ` z ', przy czym okazało się że te ` - wywalają błąd w MS SQL.
Go to the top of the page
+Quote Post
nospor
post 6.06.2017, 12:25:21
Post #4





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Bo w mssql uzywa sie []

SELECT [jakas_kolumna] FROM tabela


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 12:38