[英]SQL > Select multiple rows for single result
我有上面的表,我需要做的是,例如基于该图像,返回的单行将显示:
Ticket ID | Created | Assigned | Time Difference
2 | 2015-05-31 09:18:44 | 2015-06-03 10:05:00 | $MATH_RESULT
该图像仅显示了一个示例,但我想让它返回同时具有“分配”时间和“创建”时间的每张票证。
我不是DBA,这超出了我的有限知识。 有人可以帮我实现这一目标吗?
您可以使用join
为状态为“创建”的行查找状态为“已分配”的行:
select c.ticket_id
, c.timestamp
, a.timestamp
, datediff(a.timestamp, c.timestamp)
from ticket c
join ticket a
on c.ticket_id = a.ticket_id
where c.state = 'created'
and a.state = 'assigned'
http://sqlfiddle.com/#!9/cf498/3
SELECT t.ticket_id,t.timestamp as created, t1.timestamp as assigned, (t1.timestamp - t.timestamp) as delay
FROM table1 t
LEFT JOIN table1 t1
ON t.ticket_id = t1.ticket_id
AND t1.state = 'assigned'
WHERE t.ticket_id = 2
and t.state = 'created'
或者如果您需要所有门票的清单
SELECT t.ticket_id,t.timestamp as created, t1.timestamp as assigned, (t1.timestamp - t.timestamp) as delay
FROM table1 t
LEFT JOIN table1 t1
ON t.ticket_id = t1.ticket_id
AND t1.state = 'assigned'
WHERE t.state = 'created'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.