试一试,因为我假设您想要来自两个不同记录的数据。
SELECT
js.co,
js.queuedTime,
js.startTime,
je.completeTime,
DATEDIFF(MINUTE, js.queuedTime, je.completeTime) AS elapsedTime
FROM
SJob js
JOIN SJob je ON js.co = je.co -- Assuming this is the joining column
JOIN (SELECT
CAST(CONVERT(VARCHAR(50), GETDATE(), 101) AS DATETIME) StartDate,
CAST(CONVERT(VARCHAR(50), GETDATE() + 1, 101) AS DATETIME) EndDate) AS date
ON ((js.queuedTime >= date.StartDate AND js.queuedTime < date.endDate) OR
(je.queuedTime >= date.StartDate AND je.queuedTime < date.endDate))
WHERE
js.jobClass = 'SubmitPayroll' AND
je.jobClass = 'PayrollFinish'
ORDER BY
js.queuedTime
首先,由于它们似乎是两条单独的记录,因此您需要两次点击表(一次用于SubmitPayroll
,另一次用于PayrollFinish
记录。由于我不知道您的架构是什么样的,所以我试了一下哪个列连接他们起来。
其次,我不确定您是否希望在特定日期内开始或完成任何一项工作,因为SubmitPayroll
和PayrollFinish
记录不同。
第三,如果您想返回所有提交记录,无论它们是否具有匹配的 Finish 记录,只需将 转换JOIN SJob je
为 aLEFT OUTER JOIN
即可获得所需的内容(ISNULL
尽管.DATEDIFF
je.completeTime
同样,这是在没有关于您的架构/数据的更多信息的情况下在黑暗中拍摄的,但希望这能让您更接近您的需求。