Sprzedaż z ostatnich dni - raport

Zapytania SQL, widoki, Crystal, definicje filtrów, szybkich raportów, wydruków, API, Hydra, .NET

Moderator: mikey

bartekg
Posty: 39
Rejestracja: 07 lip 2010, 11:28
Rola: Użytkownik CDN XL
Wersja: 2019

Sprzedaż z ostatnich dni - raport

Post autor: bartekg »

Cześć,
Stworzyłem zapytanie do SQL, które wyciąga sprzedaż produktów z ostatnich 30 dni.
Występuje jednak problem, po dodaniu kolumny 'TWS_IlSpr' cały wynik zapytania jest porozbijany i produkty powtarzają się z ilościami dostępnymi do sprzedaży o dziwnych wartościach (m.in ilości z liczbami po przecinku).

Czy mógłby ktoś wskazać w którym miejscu występuje błąd?

SELECT Twr_Nazwa as 'Nazwa produktu z XL', Twr_MarkaId, Twr_Kod as 'Kod produktu', Twr_Ean as 'EAN', TWS_IlSpr as 'Ilośc dostępna do sprzedaży', ZaE_Ilosc as 'Ilosc sprzedana w 3 dni' FROM CDN.ZamElem
LEFT JOIN CDN.ZamNag ON ZaE_Gidnumer = ZaN_GIDnumer and ZaE_GIDTyp = ZaN_GIDTyp
LEFT JOIN CDN.TwrKarty ON ZaE_TwrNumer = Twr_GIDNumer
LEFT JOIN CDN.Magazyny ON Twr_MagNumer=Mag_GIDNumer
LEFT JOIN CDN.TwrStany ON Mag_GIDNumer=TWS_MagNumer
WHERE Twr_kod!='KW'
and ZaN_DataWystawienia >= datediff(day, '1800-12-28', '2020-01-22') -30
and Mag_GIDNumer=1
and ZaN_Rodzaj=4
and ZaN_ZamTyp=1280
GROUP BY Twr_Kod, Twr_Nazwa, Twr_Ean, Twr_MarkaId, ZaE_Ilosc, TWS_IlSpr

itheon
Posty: 25
Rejestracja: 18 gru 2015, 22:24
Rola: Użytkownik CDN XL
Wersja: 2019

Re: Sprzedaż z ostatnich dni - raport

Post autor: itheon »

TwrStany zawiera stany historyczne czyli osobny wpis dla kazdego dnia w ktorym ilosc roznila sie od dnia poprzedniego
jezeli chcesz stan na obecna chwile to powinienes pobrac je z tabeli TwrZasoby
kolejna rzecz to ze polaczyles tebele twrstany tylko na podstawie magazynow ... brakuje polaczenia po GID towaru
a jezeli juz przy magazynach jestesmy to polaczyles je z karta towaru czyli pokazuje stan na domyslnym magazynie dla danego towaru a nie stan na magazynie z ktorego byla sprzedaz
na wlasnie sprzedaz ... ZamNag to naglowki zamowien a nie sprzedaz zamowienie moze byc nie zrealizowane lub zrealizowane w innej ilosci niz na zamowieniu , mogla byc tez sprzedaz z pominieciem zamowienia

cos mniej wiecej takiego powinno byc

Kod: Zaznacz cały

Select
    towar.Twr_Nazwa As 'Nazwa produktu z XL',
    towar.Twr_MarkaId,
    towar.Twr_Kod As 'Kod produktu',
    towar.Twr_Ean As 'EAN',
    (select  sum(CDN.TwrZasoby.TwZ_IlSpr) from 
         CDN.TwrZasoby where towar.Twr_GIDNumer = CDN.TwrZasoby.TwZ_TwrNumer
            And magazyn.MaS_MagNumer = CDN.TwrZasoby.TwZ_MagNumer),
    Sum(magazyn.MaS_Ilosc)
    
From
    CDN.TraElem Left Join
    CDN.TwrKarty towar On towar.Twr_GIDNumer = CDN.TraElem.TrE_TwrNumer  Left Join
    CDN.MagSElem magazyn On CDN.TraElem.TrE_GIDTyp = magazyn.MaS_ZrdTyp
            And CDN.TraElem.TrE_GIDNumer = magazyn.MaS_ZrdNumer
            And CDN.TraElem.TrE_GIDLp = magazyn.MaS_ZrdLp Left Join
    CDN.TraNag On CDN.TraElem.TrE_GIDNumer = CDN.TraNag.TrN_GIDNumer
            And CDN.TraElem.TrE_GIDTyp = CDN.TraNag.TrN_GIDTyp
Where
    CDN.TraNag.TrN_GIDTyp In (2033, 2034, 2037) And
    magazyn.MaS_MagNumer = 9 And
    CDN.TraNag.TrN_Data2 >= DateDiff(day, '1800-12-28', GetDate()) - 30 And
    towar.Twr_Kod != 'KW'
Group By
    towar.Twr_Nazwa,
    towar.Twr_MarkaId,
    towar.Twr_Kod,
    towar.Twr_Ean,
    towar.Twr_GIDNumer,
    magazyn.MaS_MagNumer
  
  
Order By
    towar.Twr_Nazwa
plus ew korekty FV do tego

bartekg
Posty: 39
Rejestracja: 07 lip 2010, 11:28
Rola: Użytkownik CDN XL
Wersja: 2019

Re: Sprzedaż z ostatnich dni - raport

Post autor: bartekg »

Dzięki za pomoc.
Wiele nauki jeszcze przede mną :)

Kamil
Posty: 2
Rejestracja: 15 sty 2020, 17:11
Rola: Użytkownik CDN XL
Wersja: 2019

Re: Sprzedaż z ostatnich dni - raport

Post autor: Kamil »

@itheon


W jaki sposób przerobić to z transakcji na zamówienia? Zamówienie u mnie od razu zakłada rezerwację towaru i taki sposób w moim przypadku byłby trochę bardziej efektywniejszy niż czekanie za potwierdzeniem zamówienia i wydrukowaniem paragonu na produkt :)

Z góry dzięki za pomoc :)

Kod: Zaznacz cały

Select
                    towar.Twr_Nazwa As 'Nazwa produktu z XL',
                    SLW_WartoscS As 'Marka',
                    towar.Twr_Kod As 'Kod produktu',
                    towar.Twr_Ean As 'EAN',
                    (select  sum(CDN.TwrZasoby.TwZ_IlSpr ) from 
                         CDN.TwrZasoby where towar.Twr_GIDNumer = CDN.TwrZasoby.TwZ_TwrNumer
                            And magazyn.MaS_MagNumer = CDN.TwrZasoby.TwZ_MagNumer) As "Stan magazynowy",
                    Sum(magazyn.MaS_Ilosc)  As "Ilosc sprzedana w 4 dni"
                    
                From CDN.TraElem 
                    Left Join CDN.TwrKarty towar On towar.Twr_GIDNumer = CDN.TraElem.TrE_TwrNumer  
                    Left Join CDN.MagSElem magazyn On CDN.TraElem.TrE_GIDTyp = magazyn.MaS_ZrdTyp
                            And CDN.TraElem.TrE_GIDNumer = magazyn.MaS_ZrdNumer
                            And CDN.TraElem.TrE_GIDLp = magazyn.MaS_ZrdLp
                    Left Join CDN.TraNag On CDN.TraElem.TrE_GIDNumer = CDN.TraNag.TrN_GIDNumer
                            And CDN.TraElem.TrE_GIDTyp = CDN.TraNag.TrN_GIDTyp
                    Left join cdn.Slowniki on Twr_MarkaId=SLW_ID
                
                Where
                    CDN.TraNag.TrN_GIDTyp In (2033, 2034, 2037) And
                    magazyn.MaS_MagNumer = 1 And
                    CDN.TraNag.TrN_Data2 >= DateDiff(day, '1800-12-28', GetDate()) - 3 And
                    towar.Twr_Kod != 'KW'
                    
                Group By
                    towar.Twr_Nazwa,
                    towar.Twr_Kod,
                    towar.Twr_Ean,
                    towar.Twr_GIDNumer,
                    magazyn.MaS_MagNumer,
                    SLW_WartoscS
                  
                Order BY CASE WHEN SLW_WartoscS IS NULL THEN 1 ELSE 0 END, SLW_WartoscS

ODPOWIEDZ