使用 Row_number() 和分区,然后排序 desc,并在 DB2 中选择顶部结果
using Row_number() and Partition, then ordering desc, and selecting top result in DB2
我有一个 db2 链接服务器,我正在 运行 通过 SQL 服务器进行查询。
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');
table有历史记录,所以每一个人的年龄都有一行。我想 select 每个分区的最高编号行,因为这会给我他们当前的年龄,但是当我将限制 1 设置为 select 最高结果时,我只得到 1 行,忽略了所有其他人.问题是有很多人住在一所房子里,我需要他们所有的年龄,而不仅仅是他们中的一个。我如何 select db2 中每个分区的最高结果?
应用限制之前
应用限制后,我还需要其他名称
Db2 查询看起来像这样 - 无法在同一查询部分引用行号,这就是我使用 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
希望这对您有所帮助 - 由于有关数据的信息有限,这只是一个最佳猜测
我有一个 db2 链接服务器,我正在 运行 通过 SQL 服务器进行查询。
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');
table有历史记录,所以每一个人的年龄都有一行。我想 select 每个分区的最高编号行,因为这会给我他们当前的年龄,但是当我将限制 1 设置为 select 最高结果时,我只得到 1 行,忽略了所有其他人.问题是有很多人住在一所房子里,我需要他们所有的年龄,而不仅仅是他们中的一个。我如何 select db2 中每个分区的最高结果?
应用限制之前
应用限制后,我还需要其他名称
Db2 查询看起来像这样 - 无法在同一查询部分引用行号,这就是我使用 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
希望这对您有所帮助 - 由于有关数据的信息有限,这只是一个最佳猜测