Forum Użytkownikow Subiekt GT
InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: hansikkk w Grudzień 28, 2015, 15:20:03
-
Witam,
Mam takie zestawienie:
SELECT dok__Dokument.dok_DataWyst, dok__Dokument.dok_Status, dok__Dokument.dok_Typ, dok__Dokument.dok_Podtyp, dok_Pozycja.ob_TowId, dok_Pozycja.ob_Ilosc, tw__Towar.tw_Nazwa, dok__Dokument.dok_JestTylkoDoOdczytu
FROM dok__Dokument INNER JOIN
dok_Pozycja ON dok__Dokument.dok_Id = dok_Pozycja.ob_DokHanId INNER JOIN
tw__Towar ON dok_Pozycja.ob_TowId = tw__Towar.tw_Id
WHERE (dok__Dokument.dok_Status = 0) AND (dok__Dokument.dok_Podtyp <> 1) AND (dok__Dokument.dok_Typ = 21) AND
(dok__Dokument.dok_DataWyst > CONVERT(DATETIME, '2015-01-01 00:00:00', 102))
ORDER BY dok__Dokument.dok_DataWyst
Mam kilka problemów:
- chciałbym by nie były uwzględniane dokumenty dla których został wystawiony zwrot lub korekta FVAT
- chciałbym zgrupować towar po nazwie i zsumować ilość - dostaję syntax error, pewnie źle storuję GROUP BY
Czy mógłbym ktoś pomóc?
Pozdrawiam,
-
To może najpierw pokaż jak wygląda cała klauzula WHERE po dopisaniu tego OR
-
Dodałem na wyczucie nawias i zaczęło działać, obecnie wygląda to tak:
WHERE (dok__Dokument.dok_Status = 0) AND (dok__Dokument.dok_Podtyp <> 1) AND ((dok__Dokument.dok_Typ = 21) OR (dok__Dokument.dok_Typ = 2)) AND (dok__Dokument.dok_DataWyst > CONVERT(DATETIME, '2015-01-01 00:00:00', 102))
-
No to masz +2 za wyczucie, ale sugerowałbym zainteresowanie się tym i przeanalizowanie dlaczego wtedy nie zadziałało a teraz działa.
Inaczej następne zestawienie też zadziała jak cię nawiedzi Moc ;)
-
Domyślam się, ale nie to jest problemem.
Dojechałem funkcję GROUP BY, obecnie zapytanie wygląda tak:
SELECT dok_Pozycja.ob_TowId as ID, tw__Towar.tw_Nazwa as Nazwa, sum(dok_Pozycja.ob_Ilosc) as Ilosc
FROM dok__Dokument INNER JOIN
dok_Pozycja ON dok__Dokument.dok_Id = dok_Pozycja.ob_DokHanId INNER JOIN
tw__Towar ON dok_Pozycja.ob_TowId = tw__Towar.tw_Id
WHERE (dok__Dokument.dok_Status = 0) AND (dok__Dokument.dok_Podtyp <> 1) AND ((dok__Dokument.dok_Typ = 21) OR (dok__Dokument.dok_Typ = 2)) AND (dok__Dokument.dok_DataWyst > CONVERT(DATETIME, '2015-01-01 00:00:00', 102))
GROUP BY tw__Towar.tw_Nazwa, dok_Pozycja.ob_TowId
ORDER BY tw__Towar.tw_Nazwa
Pozostaje ostatnia kwestia, pomijania FVAT i PA gdzie był wystawiony zwrot.
-
Znajdź więc dokumenty, do których były zwroty i wyklucz je.
Obawiam się jednak, że w tym zestawieniu jest jeszcze parę potencjalnych luk.
Nie czuję potrzeby jaką to zestawienie zaspokaja ale:
- wykluczyłeś np PAf, za to bierzesz pod uwagę dokumenty unieważnione - tak miało być?
- nie wiem czy przy FSz dostaniesz to co chcesz. Spróbuj zrobić WZ na 1 szt, z tego FSz z wycofanym skutkiem magazynowym, zmień na tej FSz ilość i zobacz czy to tak miało być
-
Widzę że kolega z tych co żądają kategorycznie gotowego rozwiązania, albo strzelają focha i psują reputację.
Nie mam czasu analizować twojego zestawienia, ale rzuciłem okiem i zwróciłem uwagę na 2 potencjalne problemy, które mogą spowodować błędy.
Podpowiedziałem też jak się pozbyć tych ze zwrotami. Jeśli nie zrozumiałeś co to znaczy "wyklucz je" to wystarczyło spytać co przez to rozumiem.