我在这样的表中表示了以下数据:
用户类型 | 日期 | |
---|---|---|
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;