Szukam sposobu na obsłużenie następującego scenariusza. Mam tabelę bazy danych, której potrzebuję zwrócić tylko jeden rekord dla każdego "identyfikatora grupy", który jest zawarty w tabeli, ponadto rekord wybrany w ramach każdej grupy powinien być najstarszą osobą w gospodarstwie domowym.Zapytanie SQL zwracające tylko 1 rekord na identyfikator grupy
ID Group ID Name Age
1 134 John Bowers 37
2 134 Kerri Bowers 33
3 135 John Bowers 44
4 135 Shannon Bowers 42
Tak więc w przykładowych danych zamieszczonych wcześniej I musiałby ID 1 i 3 zwracane są one najstarsze ludzi w każdym identyfikatorem grupy.
Odbywa się to w odniesieniu do bazy danych SQL Server 2005.
Jeśli chcesz nazwę, nadal możesz wybrać> 1 wiersz, jeśli masz> 1 osobę z najstarszym wiekiem. Powinieneś także ustalić kryteria wyboru nazwy również w tym przypadku. –
Dobra racja Chris. Próbuje nieco uprościć to pytanie, ale to pozostawia takie dziury :-) Właściwie to mam inne pole dla płci, więc szukam wyboru najstarszego mężczyzny w domu. jeśli jest mężczyzna, to najstarsza kobieta. W przypadku, gdy w tym samym gospodarstwie domowym jest dwóch mężczyzn w tym samym wieku, muszę wybrać tylko jeden z zapisów. Może to być oparte na czymś tak prostym, jak osoba o najniższym numerze identyfikacyjnym dla wyłącznika wiązania. –
Istnieje dobra dyskusja na temat tego rodzaju problemu w sekcji 21.4, "Extrema Functions", z doskonałej książki Joe Celko "SQL for Smarties". Jeśli masz zamiar borykać się z czymś trudniejszym niż proste WYBIERZ i WSTAWIĆ, bardzo polecam tę książkę. – shoover