Estoy buscando una forma de manejar el siguiente escenario. Tengo una tabla de base de datos que necesito devolver solo un registro para cada "identificación de grupo" que está contenida dentro de la tabla, además el registro que se selecciona dentro de cada grupo debe ser la persona más vieja en el hogar.Consulta SQL para devolver solo 1 registro por ID de grupo
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
Así que en los datos de las muestras proporcionadas anteriormente que iba a necesitar ID 1 y 3 devueltos, ya que son las personas más ancianas dentro de cada ID de grupo.
Esto se está consultando en una base de datos de SQL Server 2005.
Si desea el nombre, todavía tiene la posibilidad de elegir> 1 fila si tiene> 1 persona con la edad más avanzada. También debe establecer criterios sobre qué nombre elegir en ese caso. –
Buen punto Chris. Estaba tratando de simplificar la pregunta un poco, pero eso deja agujeros como estos :-) En realidad tengo otro campo para el género, así que estoy buscando seleccionar al hombre más viejo dentro de un hogar. si hay un macho, entonces la hembra más vieja. En el caso de que haya dos hombres en el mismo hogar con la misma edad, entonces debo seleccionar solo 1 de los registros. Esto podría basarse en algo tan simple como la persona con el número de ID más bajo para el desempate. –
Hay una buena discusión sobre este tipo de problema en la sección 21.4, "Funciones de Extrema", del excelente libro de Joe Celko "SQL for Smarties". Si va a encontrar algo más complicado que simples SELECT e INSERT, recomiendo este libro. – shoover