2015-01-27 5 views
0
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 
+1

Какие RDBMS вы используете –

+0

Это as400 DB2. – user3543512

+0

Какая версия AS/400, пожалуйста? Хотя все последние версии поддерживают необходимые функции. Это простая проблема с тегом: наибольшая-n-на-группу, все стандартные ответы должны работать нормально. –

ответ

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 
+0

Можно ли это поддерживать в DB2? – user3543512

+0

@ user3543512 Да, это поддерживается –

+0

У меня есть ошибка при выборе *, row_number() – user3543512

0

Вот некоторые вариации не ASAIK эти работы (между ними гигов не испытывать)

STRAIGHT UP QUERY

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

ОБЩИЙ СТОЛ ЭКСПРЕССИЯ 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 
Смежные вопросы