我正在尝试创建一个查询,获取事件开放的小时数。以下是我的查询。我使用case语句,因为它需要考虑只计算工作日。这是整个过程中的一步,我的总体目标实际上是获取这些天的小时数。例如,如果天数超过一个,请计算所有这些天并乘以8。如果少于一个,请进行日期差异小时,并仅获取当天的小时数。非常感谢您的帮助!
但是我遇到了以下错误:
当子查询未引入EXISTS时,选择列表中只能指定一个表达式。
但是我遇到了以下错误:
当子查询未引入EXISTS时,选择列表中只能指定一个表达式。
DECLARE @workdays int
SELECT creationDateTime,
closedDateTime,DATEDIFF(dd, creationDateTime, closedDateTime)+1,
CASE WHEN (DATEDIFF(dd, creationDateTime, closedDateTime)+1 > 1)
THEN (
SELECT creationDateTime ,closedDateTime,
((DATEDIFF(dd, creationDateTime, closedDateTime)+1)
-(DATEDIFF(wk, creationDateTime, closedDateTime) * 2)
-(CASE WHEN DATENAME(dw, creationDateTime)
= 'Sunday' THEN 1 ELSE 0 END)
-(CASE WHEN DATENAME(dw, closedDateTime)
= 'Saturday' THEN 1 ELSE 0 END)
)*8 AS workdayhours
FROM table.ofevents where closedDateTime IS NOT NULL) END
FROM table.ofevents where closedDateTime IS NOT NULL
CASE
是一个表达式(而不是语句),它返回恰好一个值。它不能用于控制流程,就像你在这里尝试使用它一样。 - Aaron Bertrand