我需要编写查询以返回每个人选择的第一种和最后一种颜色。这是我的代码
Select t1.name,t1.color,min(t1.rnkmin) ,t2.color,max(t2.rnkmax)
From(
Select name,color,
Danse_rank() over(partition by name order by time asc) as rnkmin
From table 3) as t1 inner join (
Select name,color,
Danse_rank() over (partition by name order by date asc) as rnkmax
From table 3) as t2 on t1.name=t2.name
但是可惜我遇到错误,我不明白为什么谢谢您的帮助:)
您可以使用row_number()
两次:
select color, name, time
from (
select
t.*,
row_number() over(partition by name order by time) rn_asc,
row_number() over(partition by name order by time desc) rn_desc
from mytable t
) t
where rn_asc = 1 or rn_desc = 1
如果要在同一记录中同时使用两种颜色,则可以汇总:
select
name,
max(case when rn_asc = 1 then color end) as first_color
max(case when rn_desc = 1 then color end) as last_color
from (
select
t.*,
row_number() over(partition by name order by time) rn_asc,
row_number() over(partition by name order by time desc) rn_desc
from mytable t
) t
where rn_asc = 1 or rn_desc = 1
group by name