[MSSQL] Distinct po dwóch polach z wyniku

0

Cześć, pisałem kiedyś podobny temat, ale tutaj niestety tak się nie da.

Załóżmy, że mam taki wynik:

ID             EID            Value
-----------------------------
1               12                5
2               12                5
10              8                 9

I teraz, jak z tego uzyskać:

ID             EID            Value
-----------------------------
2               12                5
10              8                 9

Czyli chodzi o wyeliminowanie wszystkich rekordów, gdzie EID i Value są takie same. Oczywiście ID jest kluczem i muszę mieć je w wyniku. Rzecz jasna ID dla każdego wiersza będzie inne.

Wynik jest uzyskany sa pomocą zagnieżdżonych selectów.

0

Witam

Z tego co rozumiem to odpada standartdowy distinct, group by

Select distinct eid,val
from test

select eid,val
from test
group by eid,val

Wyniki tych dwóch zapytań daja identyczne wyniki pogrupowane wyniki wg, eid i val niestety nie daja id ;-/
Jak dodasz id do distincta czy group by to znowu nie pogrupuje bo id jest rozumiem rózne dla kazdego z wierszy.

Z tego co piszesz to ma pogrupować po eid i val a do tego chcemy ID z tabeli jakią zamieściłeś domyślam się ze chodzi o najwyzszy ID w przypadku n-krotek o tych samych wart eid i val grupujących
wiec machnąłem testowo coś takiego:

select max(id)as id ,eid,val
from test
group by eid,val

a więc otzrymujemy wynik zgodny z tym co oczekujesz , sprawdz ;-)
ponieważ pole id nie jest brane pod uwage w sekcji group by bo tego nie chcemy ale chcemy je widziec przy zalozeniu ze interesuje nas najwyzszy id to musimy zastosowac agregart w tym przypadku MAX(ID)

pozdr , ciekawa łamigłówka w przerwie w klepaniu TSQL ;-)
AzazelWroc

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