将来自不同行的数据合并为一个

时间:2019-10-10 14:33:48

标签: sql

我有一个看起来像这样的数据库:

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查询可以将一些行放到一个逗号分隔的字段中,但这不是我想要的。

有什么好主意吗?

2 个答案:

答案 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