我有一张像这样的表(是的结构很糟糕,不能改变它):
Id | line | Status|TimeStamp | AssociationID
1 | A | close | 10:30 am | f2da3
2 | A | ack | 10:15 am | f2da3
3 | A | open | 10:00 am | f2da3
4 | A | close | 09:10 am | j7s9d
5 | A | ack | 08:45 am | j7s9d
6 | A | open | 08:00 am | j7s9d
注意:TimeStamp是datetime数据类型。
我需要一个SQL查询,它会告诉我每AssociationID.
次'打开'到'关闭'之间的经过时间(以分钟为单位)
因此输出表看起来像:
AssociationID | OpenToCloseTime
f2da3 | 30
j7s9d | 70
SQL查询会是什么样的?我非常偏离我的元素,感谢任何帮助!
答案 0 :(得分:3)
这是你在找什么?如果提供了associationId,则状态是唯一的。
WITH A AS
(
SELECT * FROM tableA WHERE status = 'Close'
)
,B as
(
SELECT * FROM tableA WHERE Status = 'Open'
)
SELECT
A.AssociationID,
DATEDIFF(minute,A.TimeStamp,B.TimeStamp)
FROM A
INNER JOIN B ON
A.AssociationID = B.AssociationId