Sto cercando un modo per gestire il seguente scenario. Ho una tabella di database che ho bisogno di restituire solo un record per ogni "id di gruppo" che è contenuto all'interno della tabella, inoltre il record che è selezionato all'interno di ciascun gruppo dovrebbe essere la persona più anziana nella famiglia.Query SQL per restituire solo 1 record per ID di gruppo
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
Così nei dati di esempio forniti sopra avrei bisogno di ID 1 e 3 restituito, in quanto sono il popolo più antico all'interno di ogni gruppo id.
Questo è interrogato in un database SQL Server 2005.
Se si desidera il nome, è ancora possibile scegliere> 1 riga se si dispone di> 1 persona con l'età più vecchia. Dovresti anche stabilire dei criteri su quale nome scegliere in quel caso. –
Buon punto Chris. Stavo cercando di semplificare la domanda un po ', ma questo lascia dei buchi come questi :-) In realtà ho un altro campo per il genere, quindi sto cercando di selezionare il maschio più anziano all'interno di una famiglia. se c'è un maschio, allora la donna più anziana. Nel caso in cui ci siano due maschi nella stessa famiglia con la stessa età, allora devo selezionare solo 1 dei record. Questo potrebbe essere basato su qualcosa di semplice come la persona con il numero ID più basso per il tie breaker. –
C'è una buona discussione di questo tipo di problema nella sezione 21.4, "Funzioni estreme", dell'eccellente libro di Joe Celko "SQL for Smarties". Se hai intenzione di imbatterti in qualcosa di più complicato di semplici SELECT e INSERT, consiglio vivamente questo libro. – shoover