我有一个查询,我试图在2个不同的行中找到列中的日期差异。 StartTime
和EndTime
也在不同的表格中。以下是我的结果和查询的示例。我需要在第1行的EndTime
和第2行的StartTime
中找到差异。我需要在结果中一直继续这个序列。
StartTime EndTime
2015-04-22 07:53:00.000 2015-04-22 08:27:00.000
2015-04-22 09:12:00.000 2015-04-22 10:46:00.000
2015-04-22 12:12:00.000 2015-04-22 13:06:00.000
2015-04-23 07:36:00.000 2015-04-23 08:34:00.000
2015-04-23 09:50:00.000 2015-04-23 10:48:00.000
这是我的疑问:
SELECT OP1.Op1DateTime as StartTime,
OP2.Op7DateTime as EndTime
FROM SchOrPatCases pc
inner join SchPatOrCaseTimesOp1 OP1 on OP1.CaseID = pc.PatientCaseID
inner join SchPatOrCaseTimesOp2 OP2 on OP2.CaseID = OP1.CaseID
inner join AbstractData a on a.AccountNumber = pc.AdmExtUrn
where pc.OperationRoomID in ('ORMAIN03')
and a.PatientClass not in ('IN','INMCR','INMCD')
order by StartTime
答案 0 :(得分:0)
试试这个:
SELECT CAST(OP2.Op7DateTime - OP1.Op1DateTime AS TIME) AS DIFF_TIME
FROM SchOrPatCases pc
INNER JOIN SchPatOrCaseTimesOp1 OP1 on OP1.CaseID = pc.PatientCaseID
INNER JOIN SchPatOrCaseTimesOp2 OP2 on OP2.CaseID = OP1.CaseID
INNER JOIN AbstractData a on a.AccountNumber = pc.AdmExtUrn
WHERE pc.OperationRoomID in ('ORMAIN03')
and a.PatientClass not in ('IN','INMCR','INMCD')
ORDER BY StartTime
答案 1 :(得分:0)
坚持使用CTE
;with CTE as
(SELECT OP1.Op1DateTime as StartTime,
OP2.Op7DateTime as EndTime
FROM SchOrPatCases pc
inner join SchPatOrCaseTimesOp1 OP1 on OP1.CaseID = pc.PatientCaseID
inner join SchPatOrCaseTimesOp2 OP2 on OP2.CaseID = OP1.CaseID
inner join AbstractData a on a.AccountNumber = pc.AdmExtUrn
where pc.OperationRoomID in ('ORMAIN03')
and a.PatientClass not in ('IN','INMCR','INMCD')
order by StartTime)
select DATEDIFF(dd, Endtime, Starttime)
from CTE
这会将字段视为位于同一个表中。 然后,您可以使用DATEDIFF或等效物来获得时间差异。