【发布时间】:2019-04-12 21:11:55
【问题描述】:
我有事件状态表,表结构已经定义好了,我想把几行值合并成一行。
当前表格数据:
事件:
EVENT EVENTNAME EVENTACTION STATUS TIMESTAMP
"Event1" "FootBall" "FootBall0" "started" "1554980085"
"Event1" "TableTennis" "TT0" "started" "1554980086"
"Event1" "FootBall" "FootBall0" "success" "1554980087"
"Event1" "Chess" "CHESS0" "success" "1554980095"
"Event1" "TableTennis" "TT0" "running" "1554980189"
"Event1" "FootBall" "FootBall1" "started" "1554980082"
我需要选择查询来显示数据如下:
EVENT EVENTNAME EVENTACTION STATUS STARTTIME RUNNINGTIME ENDTIME
"Event1" "FootBall" "FootBall0" "success" 1554980085 NULL 1554980087
"Event1" "TableTennis" "TT0" "running" 1554980086 1554980189 NULL
"Event1" "Chess" "CHESS0" "success" 1554980098 NULL 1554980100
我必须显示EVENT、EVENTNAME、EVENTACTION 和最新的STATUS 以及started、running 和success 的时间戳,如果时间不存在则应设置@987654330 @。
我使用了带有大小写的 SELECT 查询,但时间戳没有放在单个相关行中。
SELECT AE.EVENT,
AE.EVENTNAME,
AE.EVENTACTION,
AE.STATUS,
(case WHEN AE.STATUS='started' THEN AE.timestamp END) as starttime,
(case WHEN AE.STATUS='running' THEN AE.timestamp END) as runningtime,
(case WHEN AE.STATUS in ('success','failed') THEN AE.timestamp END) as endtime
FROM agentEvents AE
ORDER by timestamp ASC
任何线索。
【问题讨论】: