我正在寻找一种方法来处理以下情况.我有一个数据库表,我需要为表中包含的每个“组ID”返回一个记录,此外,每组中选择的记录应该是家庭中最老的.
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
所以在上面提供的样本数据中,我需要返回ID 1和3,因为它们是每个组ID中最老的人.
@R_502_323@
SELECT t.* FROM ( SELECT DISTINCT groupid FROM mytable ) mo CROSS APPLY ( SELECT TOP 1 * FROM mytable mi WHERE mi.groupid = mo.groupid ORDER BY age DESC ) t
或这个:
SELECT * FROM ( SELECT *,ROW_NUMBER() OVER (PARTITION BY groupid ORDER BY age DESC) rn FROM mytable ) WHERE rn = 1
即使是关系,这也可以返回每个组最多一个记录.