2016-11-03 3 views
2

Как использовать «выборку первой строки только» в сочетании с оператором «in»? что-то вродеИзвлечь первую строку только с операцией IN в DB2

select user_id, item_name as last_item_name 
from sale 
where user_id in (1,2) 
order by date desc 
fetch first row only 

, который я хочу, чтобы вернуть последний товар, каждый покупает? например: при выполнении запроса на

-------------------------------- 
id | user_id | item_name| date | 
1 | 1  | pen  | 01/01| 
2 | 1  | book  | 02/01| 
3 | 2  | book  | 01/01| 
4 | 2  | computer | 02/01| 
-------------------------------- 

должен вернуть

user_id | last_item_name| 
1  | book   | 
2  | computer  | 
------------------------- 

Спасибо!

+0

проблема с классикой [тег: наибольшая n-на-группу] (где группа по-личному, а «наибольшая» - последняя дата). –

ответ

1

Значит, вы хотите последнего пользователя? Использование ROW_NUMBER():

SELECT * FROM (
    SELECT t.*, 
      ROW_NUMBER() OVER(PARTITION BY t.user_id ORDER BY t.date DESC) as rnk 
    FROM sale t 
    WHERE t.user_id IN(1,2)) s 
WHERE s.rnk = 1 
+0

Спасибо! это сработало! –

0

Раствор 1

with uniquserid as (
select distinct user_id from sale 
) 
select f1.user_id , f3.item_name 
from uniquserid f1 
inner join lateral 
(
select * from sale f2 
where f1.user_id =f2.user_id 
ORDER BY f2.date DESC 
fetch first rows only 
) f3 on 1=1 
0

Раствор 2

select f1.user_id , f3.item_name 
from 
(select distinct user_id from sale) f1 
inner join lateral 
(
select * from sale f2 
where f1.user_id =f2.user_id 
ORDER BY f2.date DESC 
fetch first rows only 
) f3 on 1=1 
0

Раствор 3

with uniquserid as (
select distinct user_id from sale 
) 
select f1.user_id , (select f2.item_name from sale f2 where f1.user_id =f2.user_id ORDER BY f2.date DESC 
fetch first rows only) as item_name 
from uniquserid f1 
0

Раствор 4

select f1.user_id , (select f2.item_name from sale f2 where f1.user_id =f2.user_id ORDER BY f2.date DESC 
fetch first rows only) as item_name 
from (select distinct user_id from sale) f1 

 Смежные вопросы

  • Нет связанных вопросов^_^