Forum Użytkownikow Subiekt GT
InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: casu w Październik 03, 2019, 11:50:42
-
Witam, stworzyłem zapytanie aby raport pokazywał mi jak się sprzedawały towary do dokumentu PZ. Wszystko jest OK ale chciałbym sprzedaż ograniczyć datami od do: dla przykładu PZ jest z 1 września a chciałbym w dniu 30 września sprawdzić sprzedaż za pierwsze 10 dni. Kiedy dodaje warunek z datami (dok_DataWyst) to pokazuje mi źle zakup z PZ bez niego jest wszystko dobrze??
SELECT RIGHT (Nr_pz,4) AS Rocznik, Nr_PZ, SKU, Nazwa, Cena_zak, Zakup, SUM (vwZstSprzWgKhnt.ob_ilosc * ob_znak) AS Sprzedaz
FROM SprDoPz
LEFT JOIN vwZstSprzWgKhnt ON SprDoPz.tw_id = vwZstSprzWgKhnt.ob_towId
WHERE
(Nr_Pz LIKE '{T:Podaj nr dokumentu, pozostaw puste, aby wyszukać wszystko}%')
AND (Nazwa LIKE '{T:Podaj nazwę towaru}%')
GROUP BY ID_dokumentu, tw_id, Nr_PZ, SKU, Nazwa, Cena_zak, Zakup
Proszę o pomoc.
-
A może daj kod z z tym filtrem co ci działa nie tak jak chcesz, żebyśmy wiedzieli co robisz źle zamiast zgadywać?
No i co to jest SprDoPz
? Nie ma takiej fabrycznej tabeli ani widoku w Navireo.
-
SprDoPz jest stworzonym przeze mnie widokiem,
SELECT RIGHT (Nr_pz,4) AS Rocznik, Nr_PZ, SKU, Nazwa, Cena_zak, Zakup, SUM (vwZstSprzWgKhnt.ob_ilosc * ob_znak) AS Sprzedaz
FROM SprDoPz
LEFT JOIN vwZstSprzWgKhnt ON SprDoPz.tw_id = vwZstSprzWgKhnt.ob_towId
WHERE
(Nr_Pz LIKE '{T:Podaj nr dokumentu, pozostaw puste, aby wyszukać wszystko}%')
AND (Nazwa LIKE '{T:Podaj nazwę towaru}%')
AND dok_DataWyst BETWEEN {DR:Data:}
GROUP BY ID_dokumentu, tw_id, Nr_PZ, SKU, Nazwa, Cena_zak, Zakup
-
LEFT JOIN vwZstSprzWgKhnt ON SprDoPz.tw_id = vwZstSprzWgKhnt.ob_towId
Jeśli ten join ma robić to co myślę czyli łączyć dokument sprzedaży z magazynowy to łączenie po samym id towaru to na 99,9999% to za mało.
Warunek na datę wygląda normalnie, chyba że masz daty PZ inne niż faktur i to one cie interesują - wtedy filtrujesz nie po tej kolumnie i tabeli.
Definicja widoku może mogłaby nam coś podpowiedzieć.
-
Data PZ 07.08.2019, daty na FV: dostawy i wystawienia 24.06.2019
-
Pokaż definicję tego swojego widoku. I nie napisałeś czy chcesz filtrować po dacie dokumentów sprzedaży czy po dokumentach magazynowych.
-
Definicja widoku a druga część pytania to myślę, że po dacie dokumentów sprzedaży.
SELECT T0.dok_Id AS ID_dokumentu, T5.tw_Id, T0.dok_NrPelny AS Nr_PZ, T5.tw_Symbol AS SKU, T5.tw_Nazwa AS Nazwa, T1.ob_CenaMag AS Cena_zak, SUM(T1.ob_Ilosc) AS Zakup
FROM dbo.dok__Dokument AS T0
INNER JOIN dbo.dok_Pozycja AS T1 ON T1.ob_DokMagId = T0.dok_Id
INNER JOIN dbo.tw__Towar AS T5 ON T5.tw_Id = T1.ob_TowId
WHERE (T0.dok_Typ = 10)
GROUP BY T0.dok_Id, T5.tw_Id, T0.dok_NrPelny, T5.tw_Symbol, T5.tw_Nazwa, T1.ob_CenaMag
-
Po pierwsze primo:
join do pozycji dokumentów WZ/PZ po samym id towaru bez dodatkowego powiązania z dokumentem FS/FZ/PA da ci bardzo dziwne i nieprawidłowe wyniki.
Po drugie primo:
PZ-tek to raczej niewiele będzie wystawionych do faktur sprzedaży. Nie chodziło Ci bardziej o WZ? dok_typ 11?. PZ są najczęściej powiązane z zakupami i korektami sprzedaży.
Po trzecie primo - ultimo:
Jak tam masz faktury zbiorcze to nie wiem czy to jest właściwa ścieżka odpytywania. Przy nich powiązania FS z WZ są inaczej zapisywane a jak jakoś do tej pory nie miałem specjalnej potrzeby wgryzania się w ich działanie.
-
Ideą tego zestawienia było aby na podstawie PZ powstałej do faktury zakupu sprawdzić jak sprzedają się towary, które na niej się znajdują, dodatkowa opcją miał być wybór okresu sprzedaży tych towarów. Możliwe, że źle zabrałem się do tego zestawienia, ewentualnie proszę o podpowiedź jak je stworzyć na nowo. ;)
-
Jak ja bym coś takiego chciał zrobić to pewnie robiłbym to min. przy wykorzystaniu identyfikatorów dostaw z tabeli dok_magruch.
-
Trochę odświeżę temat. Udało mi się przepisać zapytanie i osiągnięty wynik jest przeze mnie OK.
Poniżej select z użyciem stworzonego widoku.
Może to pomoże komukolwiek. Pozdrawiam
SELECT RIGHT (Nr_pz,4) AS Rocznik, Nr_PZ, SKU, Nazwa, Cena_zak, Zakup, SUM (vwZstSprzWgKhnt.ob_ilosc * ob_znak) AS Sprzedaz,
CASE
WHEN (SELECT SUM(st_Stan) FROM (SELECT st_TowId, st_Stan from tw_Stan WHERE st_Stan > 0) as totals WHERE st_Stan > 0 AND st_TowId = tw_Id GROUP BY st_TowId) is NULL then 0
ELSE (SELECT SUM(st_Stan) FROM (SELECT st_TowId, st_Stan from tw_Stan WHERE st_Stan > 0) as totals WHERE st_Stan > 0 AND st_TowId = tw_Id GROUP BY st_TowId)
END as Stan
FROM SprDoPz
FULL JOIN vwZstSprzWgKhnt ON SprDoPz.tw_id = vwZstSprzWgKhnt.ob_towId
WHERE
(Nr_Pz LIKE '{T:Podaj nr dokumentu, pozostaw puste, aby wyszukać wszystko}%')
GROUP BY ID_dokumentu, tw_id, Nr_PZ, SKU, Nazwa, Cena_zak, Zakup