我需要获得在同一个表中表示为行的两个事件之间的时差。其中,该行包含以下字段:
JobNum
EventDate
Event
Event
字段用于查看该事件是该作业的开始还是结束。
我需要获得EventDate
字段与JobNum
相同的时间差异。由于单个JobNum
可能有多个事件,因此我还需要指定JobNum
相同,并且只需EventDate= 'Starting'
从行中EventDate = 'Finished'
减去行Starting
(每Finished
只会有一个JobNum
和一个Select a.[AutoNumber], DATEDIFF(SECOND, (SELECT m.EventDate
FROM [myTable] m
WHERE m.Event = 'Starting' and a.JobNum= m.JobNum),
(SELECT m.EventDate
FROM myTable m
WHERE m.Event = 'Finished' and a.JobNum= m.JobNum)
)
From myTable a
个事件。
以下是我已经得到但它不起作用:
{{1}}
部分运行,但随后出现以下错误:
子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。
我也看了一下这个问题,但无法弄清楚如何修改代码以适应我的情况。 How to get difference between two rows for a column field?
非常感谢任何帮助。
答案 0 :(得分:2)
如果我正确理解您的问题,可以使用conditional aggregation
选择一个选项:
Select [AutoNumber],
datediff(second,
max(case when event = 'starting' then EventDate end),
max(case when event = 'Finished' then EventDate end)
)
From myTable a
Group By [AutoNumber]