Sql Server prośba o pomoc (grupuj według maks.)
CZEŚĆ,
Mam ogromny problem z jednym zapytaniem, oto dane, które mam w swojej tabeli:
entityId groupId groupDepth
-------------------- -------------------- -----------
NULL 1090 0
56 1090 1
222 1090 1
226 1090 1
227 1090 1
228 1090 1
234 1090 1
248 1090 2
249 1090 2
250 1090 2
251 1090 2
252 1090 1
256 1090 1
261 1090 1
288 1090 1
294 1090 1
300 1090 1
4691 1090 1
4694 1090 1
4697 1090 1
Więc to, co chciałbym zrobić, to uzyskać wiersz z najwyższą groupDepth, gdy podane są entityId i groupId. Przykładowe wyniki:
input: entityId = 294, groupId = 1090
entityId groupId groupDepth
-------------------- -------------------- -----------
294 1090 1
input: entityId = 113, groupId = 1090
entityId groupId groupDepth
-------------------- -------------------- -----------
NULL 1090 0
Myślałem o czymś takim:
SELECT * FROM [dbo].[EntityGroup] a
WHERE EXISTS
( SELECT groupId
FROM [dbo].[EntityGroup] b
WHERE
(b.entityId is null or b.entityId = 294) AND
b.groupId = a.groupId
GROUP BY b.groupId
HAVING a.groupDepth = max(b.groupDepth) and
a.entityId = b.entityId )
Każda pomoc byłaby bardzo mile widziana!
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
2 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Powinno działać, jeśli dobrze cię rozumiem
EDIT
Anonimowy użytkownik
Potwierdzenie od:
EDIT
: Zaktualizowany kod SQL, aby uporządkować według elementu entityId malejąco i przyjmowanie pierwszego z nich da poprawną odpowiedź dla określonych przypadków