我有一个看起来像这样的数据库:
col1 | col2 | col3 | col4
User1 | Coms | Start | 19 June 2019
User1 | Coms | Ended | 20 June 2019
我想将数据转置为一行,如下所示:
col1 | col2 | col3 | col4 | col5 (end status)
User1 | Coms | Start | 19 June 2019 | Ended
您看到,该用户Ended
是会话,这意味着该事务的第二行被拉到第一行。如果它们没有结束,则新的End Status
列将只是一个Null
。
我知道有一个函数Stuff ... For XML Path
查询可以将一些行放到一个逗号分隔的字段中,但这不是我想要的。
有什么好主意吗?
答案 0 :(得分:1)
使用条件聚合
select col1,col2,
max(case when col3='start' then col3 end),
max(case when col3='end' then col3 end),min(col4)
from table group by col1,col2
答案 1 :(得分:1)
使用条件聚合
select col1, col2,
max(case when col3='Start' then col3 end) as col3,
max(case when col3='Start' then col4 end) as col4,
max(case when col3='Ended' then 'Ended' end) as col5
from tablename
group by col1,col2