Wyszukiwanie dwóch lub więcej wierszy przy określonym warunku

0

Witajcie,

Nie wiedziałem jak to nazwać problem, ale mam taki kod:

Select  RouteID,
		RouteName,
		Count(distinct OR01004) as 'Ilość klientów na trasie'
FROM    OR010100 
			  LEFT OUTER JOIN (SELECT DISTINCT OR03001, OR03002, OR03011, OR03012, OR03076 FROM OR030100) AS OR030100 ON OR01001=OR03001
	          LEFT OUTER JOIN zeel_completation_Routes ON OR03076=RouteID
WHERE	RouteDate>=CAST(GETDATE() AS DATE) and RouteDate<(GETDATE()+1) AND
		LEFT(RouteName,5)<>'CROSS' AND
		WH=011 AND
		Carrier in ('103170','110021','109548')

GROUP BY
		RouteID,
		RouteName
HAVING
		COUNT(distinct OR01004)>1
ORDER BY 2

Stworzyłem takie zapytanie do sprawdzania swoich działań, czy są one poprawne.
Podpinam określone zamówienia pod określone trasy na danym spedytorze (carrier) i w przypadku tych carrierów zawsze 1 klient powinien być na 1 trasie
Czyli kontroluje siebie, wyszukuje trasy, które mają podpięte zamówienia sprzedaży, gdzie nr klienta (OR01004) jest więcej niż 1 (jeśli jest więcej to znaczy, że np założyłem trasę na dwóch klientach, czyli dwóch adresach dostawach np. na przewoźnika UPS, co oczywiście jest błędne).

A teraz interesuje mnie jak można przerobić to zapytanie by wyszukał mi trasy gdzie są zamówienia na wybranych w where carrierach przynajmniej 2 trasy do tego samego klienta.
Często się zdarza, że zakładam trasę i po 3h ktoś dopisuje na nowym zamówieniu do tego samego klienta i z uwagi, że w międzyczasie około 300 innych zamówień podpinałem, nie pamiętam, że takie zamówienie do tego klienta gdzieś podpinałem i finalnie, zbędnie tworzę dwie trasy do tego samego klienta, co generuje koszty.

Czy jest to w miarę jasne?:)
Dziękuję z góry.

1

Jeżeli dobrze zrozumiałem:

Select OR01004,
		Count(distinct RouteID)
FROM    OR010100 
			  LEFT OUTER JOIN (SELECT DISTINCT OR03001, OR03002, OR03011, OR03012, OR03076 FROM OR030100) AS OR030100 ON OR01001=OR03001
	          LEFT OUTER JOIN zeel_completation_Routes ON OR03076=RouteID
WHERE	RouteDate>=CAST(GETDATE() AS DATE) and RouteDate<(GETDATE()+1) AND
		LEFT(RouteName,5)<>'CROSS' AND
		WH=011 AND
		Carrier in ('103170','110021','109548')

GROUP BY
		OR01004
HAVING
		COUNT(distinct RouteID)>1
ORDER BY 2
0

W zasadzie rozwiązanie zaproponowane działa i trochę mi wstyd, że to takie proste było:))))

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