我有一个db2链接服务器我正在通过SQL Server运行查询。
select *
from openquery (DO,'
select distinct HOUSE_NUM, NAME, DOB, AGE, row_number()
over(partition by DOB) rownum
from schema.INFO
where HOUSE_NUM = ''332''
group by HOUSE_NUM, NAME, DOB, AGE
order by NAME, rownum desc
limit 1
with ur');
该表有历史记录,因此每个年龄段都有一行。我想为每个分区选择编号最高的行,因为这会给我他们当前的年龄,但是当我把限制1选择为最高结果时,我只得到1行而忽略所有其他人。问题是有多个人住在一个房子里,我需要他们所有的年龄,而不仅仅是其中一个。如何在db2中选择每个分区的最高结果?
Db2查询看起来像这样 - 在同一个查询部分中不能引用rownumber这就是我使用CTE的原因
with temp as (
select distinct HOUSE_NUM, NAME, DOB, AGE
, row_number() over(partition by HOUSE_NUM, NAME, DOB order by age desc) as rownum
from schema.INFO
where HOUSE_NUM = '332'
)
select *
from temp
where rownum = 1
希望这会有所帮助 - 由于有关数据的有限信息,这只是最好的猜测