将具有不同日期/变量的多行合并为一行



我在这样的表中表示了以下数据:

用户类型 日期
A 移动 2019-01-10
移动 2019-01-20
桌面 2019-03-01
桌面 2019-03-20

嗯。您可以使用row_number()(两次(和聚合:

select user,
max(case when seqnum_u = 1 then type end) as type1,
max(case when seqnum_u = 1 then date end) as date1,
max(case when seqnum_u = 2 then type end) as type2,
max(case when seqnum_u = 2 then date end) as date2
from (select t.*,
row_number() over (partition by user order by date) as seqnum_u
from (select t.*,
row_number() over (partition by user, type order by date) as seqnum
from t
) t
where seqnum = 1
) t
group by user;

最新更新