Autor Wątek: Zestawienie SQL błędna ilość sprzedanych towarów  (Przeczytany 2772 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline quadro.ql

  • Nowy użytkownik
  • *
  • Wiadomości: 1
  • Reputacja +0/-0
  • Wersja programu: Subiekt GT 1.63
Zestawienie SQL błędna ilość sprzedanych towarów
« dnia: Wrzesień 11, 2020, 09:45:06 »
Cześć, dzień dobry,

na początku dziękuję wszystkim za tyle rzeczy, które znalazłem na forum i mega mi pomogły. Jednak dotarłem do ściany, której chwilowo nie mogę przeskoczyć. Mam taki kod jak poniżej

SELECT
tw_Symbol [Symbol towaru],
tw_Nazwa [Nazwa towaru],
SUM (ob_Ilosc) [Ilość],
MAX(st_Stan) [Stan],
SUM (ob_WartNetto) [Netto],
SUM (ob_WartVat) [Vat],
SUM (ob_WartBrutto) [Brutto]
FROM dok_Pozycja
join dok__Dokument ON ob_DokHanId = dok_Id
join tw__Towar ON ob_TowId = tw_Id
join tw_Stan on tw_Id = st_TowId and st_MagId = dok_MagId
SELECT
tw_Symbol [Symbol towaru],
tw_Nazwa [Nazwa towaru],
SUM (ob_Ilosc) [Ilość],
MAX(st_Stan) [Stan],
SUM (ob_WartNetto) [Netto],
SUM (ob_WartVat) [Vat],
SUM (ob_WartBrutto) [Brutto]
FROM dok_Pozycja
join dok__Dokument ON ob_DokHanId = dok_Id
join tw__Towar ON ob_TowId = tw_Id
join tw_Stan on tw_Id = st_TowId and st_MagId = dok_MagId
WHERE (dok__Dokument.dok_Typ IN({CHL:faktura sprzedaży#2#paragon#21#korekta#6#:Typ dokumentu:2,21,6:Faktura sprzedaży, Paragon,Korekta}))
and dok_Status =1
and  dok_DataWyst BETWEEN {DR:Data:2011-01-01:2011-12-31}
and dok_MagId IN ({CHL_DB: SELECT mag_Id, mag_Nazwa FROM sl_Magazyn :Magazyn})
and (dok__Dokument.dok_KatId IN ({CHL_DB: SELECT kat_Id, kat_Nazwa FROM sl_Kategoria:Kategoria}))
GROUP BY tw_Symbol, tw_Nazwa
and dok_Status =1
and  dok_DataWyst BETWEEN {DR:Data:2020-01-01:2020-01-31}
and dok_MagId IN ({CHL_DB: SELECT mag_Id, mag_Nazwa FROM sl_Magazyn :Magazyn})
and (dok__Dokument.dok_KatId IN ({CHL_DB: SELECT kat_Id, kat_Nazwa FROM sl_Kategoria:Kategoria}))
GROUP BY tw_Symbol, tw_Nazwa

I niby wszystko dobrze działa, podaje ilość sprzedanych towarów i aktualny stan magazynowy. Tutaj jednak pojawia się problem, mianowicie ilość towarów nie zgadza się z opcją dla danego produktu, mianowicie klikam informator -> sprzedaż, zaznaczam identyczny okres czasu np. styczeń jak dla zapytania i różnica w sprzedanych sztukach to często 30-50%.

Dodam, że w wbudowanych w subiekt zestawieniach jest to liczone poprawnie, mianowicie ilość sprzedanych = to co w informatorze. Dlaczego w tym sql tak nie jest? Bardzo proszę o podpowiedź.

Offline maniootek

  • Aktywny użytkownik
  • ***
  • Wiadomości: 104
  • Reputacja +0/-0
Odp: Zestawienie SQL błędna ilość sprzedanych towarów
« Odpowiedź #1 dnia: Wrzesień 11, 2020, 09:58:53 »
Sprawdź to zapytanie:
SELECT
    tw_Symbol
    ,SUM(ob_IloscMag * ob_Znak) as [Ilość sprzedanych sztuk]
FROM
vwZstSprzWgKhnt VW
LEFT JOIN tw__Towar ON ob_TowId = tw_Id
WHERE
dok_Status <> 2
AND dok_DataWyst >= '2020-09-01' AND dok_DataWyst < '2020-09-10'
AND dbo.fnMAKE_DOKPARAM(dok_Typ, dok_Podtyp) NOT IN (131073, 393216, 393217) -- 131073=FSd, 393216=KFS, 393217=KFSn
AND dok_MagId = 1
AND ob_TowRodzaj in (1,8)
GROUP BY
dok_Id
,tw_Symbol
,tw_Rodzaj
,ob_Id

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1249
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: Zestawienie SQL błędna ilość sprzedanych towarów
« Odpowiedź #2 dnia: Wrzesień 11, 2020, 10:01:18 »
@quadro.ql Coś pomieszałeś przy wklejaniu tego zapytania - jest ono nieprawidłowe. Po tym wkleiłeś widać, że jest źle napisane, np. w ogóle nie jest uwzględnione pole dp.ob_znak co będzie powodować błędy w raportowanej ilości sprzedaży. Nie zostaną obsłużone prawidłowo zbiorcze faktury sprzedaży etc etc.


Forum Użytkownikow Subiekt GT

Odp: Zestawienie SQL błędna ilość sprzedanych towarów
« Odpowiedź #2 dnia: Wrzesień 11, 2020, 10:01:18 »