Filtrowanie po sumie zamówień kontrahenta

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

Moderator: mikey

lucasp17
Posty: 6
Rejestracja: 24 lis 2021, 15:07
Rola: Użytkownik CDN XL

Filtrowanie po sumie zamówień kontrahenta

Post autor: lucasp17 »

Witam,
Jeśli chodzi o SQL to znak tylko podstawy, ucząc się w trakcie korzystania wcześniej z WF maga, a teraz CDN XL. Nie znam niestety też struktury bazy danych, ale staram się jak najwięcej zrozumieć z samego programu i ewentualnie informacji w internecie.

Do tej pory udało mi się osiągnąć wszystko co potrzebowałem, teraz jednak na liście kontrahentów chciałbym zrobić filtr, który pokazywałyby mi tylko kontrahentów mających wartość łączną zamówień powyżej podanej wartości.

Próbowałem z taki kodem:

Kod: Zaznacz cały

@PAR ?@S100|MinWartosc|&Podaj minimalną wartość zamówień: @? PAR@

Knt_GIDNumer in
(
select Knt_GIDNumer
from cdn.KntKarty
join CDN.ZamNag on CDS.ZamNag.ZaN_KnPNumer = CDN.KntKarty.Knt_GIDNumer or CDN.ZamNag.ZaN_KnDNumer = CDN.KntKarty.Knt_GIDNumer
inner join cdn.ZamElem on CDN.ZamElem.ZaE_GIDNumer = CDN.ZamNag.Zan_GIDNumer
where SUM(ZaE_WartoscPoRabacie) > ??MinWartosc)
Jednak pokazuje mi komunikat o błędzie składni SQL po wpisaniu wartości. Przyznam szczerze, że nie wiem co inaczej należy w tym przypadku zrobić, aby to zadziałało. Podobne filtrowanie udało mi się zrobić na liście zamówień, filtrując po opiekunie:

Kod: Zaznacz cały

@PAR ?@S100|PodajOpiekuna|&Podaj opiekuna: @? PAR@

ZaN_GIDNumer
(
select ZaN_GIDNumer
from cdn.ZamNag
join CDN.PrcKarty on CDN.PrcKarty.Prc_GIDNumer = cdn.ZamNag.ZaN_OpiNumer
Where (Concat(Prc_Imie1,' ',Prc_Nazwisko)) = ??PodajOpiekuna)


W tym przypadku wszystko działa, więc analogicznie chciałem osiągnąć sumę, ale niestety mam gdzieś błąd, którego nie potrafię wychwycić, a google też nie odpowiada na moje zapytania właściwie. Prosiłbym o pomoc.

rolski95
Posty: 101
Rejestracja: 21 lut 2019, 08:24
Rola: Administrator CDN XL

Re: Filtrowanie po sumie zamówień kontrahenta

Post autor: rolski95 »

Wkradła ci się literówka w CDS.ZamNag.ZaN_KnPNumer oraz dla operacji agregujących używamy "having" + "group by" , a nie "where"

Kod: Zaznacz cały

Knt_GIDNumer in
(
select Knt_GIDNumer
from cdn.KntKarty
join CDN.ZamNag on CDN.ZamNag.ZaN_KnPNumer = CDN.KntKarty.Knt_GIDNumer or CDN.ZamNag.ZaN_KnDNumer = CDN.KntKarty.Knt_GIDNumer
inner join cdn.ZamElem on CDN.ZamElem.ZaE_GIDNumer = CDN.ZamNag.Zan_GIDNumer
group by Knt_GIDNumer
having SUM(ZaE_WartoscPoRabacie)> ??MinWartosc)

lucasp17
Posty: 6
Rejestracja: 24 lis 2021, 15:07
Rola: Użytkownik CDN XL

Re: Filtrowanie po sumie zamówień kontrahenta

Post autor: lucasp17 »

Fantastycznie, dziękuję za pomoc. Byłem na dobrej drodze, ale nigdy nie uzywałem Having, stąd na to nie wpadłem. Tak lekcja zaliczona. Dzięki raz jeszcze.

ODPOWIEDZ