我有这样的数据
Group id Date
1 1 2015-01-01
2 1 2015-01-01
1 1 2015-02-01
2 1 2015-02-01
1 1 2015-03-01
1 2 2015-04-01
2 2 2015-04-01
想要为第2组中的每个ID选择每天的每条记录(如果有)。如果第2组行不可用,则返回该日期的第1组记录。对于每个ID,始终记录第1组。因此最终结果应为
Group id Date
2 1 2015-01-01
2 1 2015-02-01
1 1 2015-03-01
2 2 2015-04-01
答案 0 :(得分:0)
使用ROW_NUMBER
窗口功能
select * from
(
select row_number()over(partition by Date order by Group) as RN,*
from yourtable
) A
Where RN =1
如果Date
有多个Group = 1
,并且您想要返回Group = 1
的所有date
条记录,请使用DENSE_RANK
代替{{} 1}}
答案 1 :(得分:0)
select distinct max(gid) as gid over(partition by id,[grp_date] order by id), id,grp_date
from test
order by grp_date