获取组的前两行

时间:2015-01-27 04:27:10

标签: sql db2 grouping rows

Item BatchNo
A    00001
A    00002
A    00003
B    00007
B    00008
B    00009
B    00010

我有一张上面的表格,我希望结果给我前两个批号。对于每个项目。我顺便使用DB2 as400。

例如:

Item BatchNo
A    00001
A    00002
B    00007
B    00008

2 个答案:

答案 0 :(得分:0)

使用Window Function从每个item

中获取前两行
Select item, batchno from (
select item, batchno,row_number()over(partition by item order by batchno) Rn 
from yourtable) a
where rn<=2

答案 1 :(得分:0)

以下是ASAIK这些工作的一些变化(介于演出之间没有测试)

直接查询

select item,batchno from yourfile 
where row_number()over(partition by item order by item,batchno) <=2
order by item,batchno 

COMMON TABLE EXPRESSION QUERY

with cte  as (
select item, batchno,row_number() over(partition by item order by item, batchno) rn 
from yourtable)
select item,batchno from cte where rn<=2 order by item,batchno