Sumowanie wielu warunków

0

Witajcie ponownie,

Mam taki kod:

select RouteID, RouteName, RouteDate, OR21001 as 'Nr zamówienia', WH as 'Magazyn', cast(SUM(Wartosc) as decimal) AS 'wartosc', Odbiorca_Kod,Odbiorca,Odbiorca_Segment_Nowy_Kod,KOR_Kod,KOR
from OR210100 inner join zeel_completation_Routes on OR21076=RouteID
inner join OLAP_Sprzedaz_View on Zamowienie_Numer=OR21001
where Data_Faktury between '2022-10-01' and '2022-10-10' and Odbiorca_Segment_Nowy_Kod in ('III', 'IV') and KOR_Kod not in ('838','188','358','618')
and OR21001 not in 
(select Zamowienie_Numer
from OLAP_Sprzedaz_View 
where Produkt_Kod='9DA.Z005.01P.0000Z') 

GROUP BY RouteID, RouteName, RouteDate, OR21001, WH, Odbiorca_Kod,Odbiorca,Odbiorca_Segment_Nowy_Kod,KOR_Kod,KOR
having sum(Wartosc) between 1 and 300
Order by 4

Generuje to np. taki wynik:
screenshot-20221010182427.png
Zapytanie w takiej formie w dużym skrócie przedstawia zamówiena do 300 PLN dla określonych segmentów sprzedaży z różnych magazynów, które nie mają w zamówieniu określonego kodu artykułu.

Chciałbym, aby zapytanie brało pod uwagę taki warunek: jeżeli ta sama Route date na dwóch lub więcej zamówieniach (niezależnie od WH,czyli magazynu) do tego samego odbiorcy mających sumarycznie wartość większą niż 300 PLN to żeby nie pokazywało to w wyniku.
Czyli tak jak na prinscreenie, wers 9 i 10 nie powinien być w wyniku zapytania.
Czy ktoś ma jakieś pomysły?

1

możesz w mysql chyba użyć SUM(wartosc) OVER (PARTITION BY Odbiorca_Kod) i dać warunek na tym >300

0

A ten warunek gdzie miałby być umieszczony i jak dokładnie miałby wyglądać?

0

Wrzuć przykład do pobawienia się na http://sqlfiddle.com/ to będzie można pogadać, tak to tylko gdybam bo mysql ostatnio używałem 15 lat temu, ale podejrzewam że trzeba to zrobić w nadzapytaniu. Ewentualnie możesz zrobić podzapytanie w WHERE ale będzie to raczej znacznie wolniejsze

1 użytkowników online, w tym zalogowanych: 0, gości: 1