使用Row_number()和Partition,然后排序desc,并在DB2中选择top result

问题描述 投票:0回答:1

我有一个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中选择每个分区的最高结果?

before applying limit

after applying limit, i need the other names too

sql-server select db2 partition row-number
1个回答
0
投票

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

希望这会有所帮助 - 由于有关数据的有限信息,这只是最好的猜测

© www.soinside.com 2019 - 2024. All rights reserved.