我使用的是SQL Server Management Studio。哪里出错了?
下面是我想做的-我想得到一个值:
- 如果
exstart_start
和dateord
之间的持续时间(以月为单位)〈= 0,则 - (从
exstart_start
到datecoms
的持续时间减去24个月,即仅当解决方案〉=0 - (如果不满足上述条件,则从
exstart_start
到datecoms
的持续时间减去12个月,即仅当解决方案〉= 0时 - 如果都不满意,则将其设置为0
- 如果
exstart_start
和dateord
之间的月持续时间〉0,则使其等于exstart_start
和dateord
之间的月持续时间
我在CASE
上的尝试:
CASE
WHEN DATEDIFF (m, exstart_start, dateord) <= 0
THEN
(CASE
WHEN ((DATEDIFF (m, exstart_start, datecoms)) - 24 <= 0)
THEN 0
ELSE (DATEDIFF (m, exstart_start, datecoms)) - 24
END)
ELSE
((CASE
WHEN DATEDIFF (m, exstart_start, datecoms)) - 12 <= 0)
THEN 0
ELSE (DATEDIFF (m, exstart_start, datecoms)) - 12)
END)
END)
ELSE
DATEDIFF (m, exstart_start, dateord) END AS diffexstarttoordered
1条答案
按热度按时间hmae6n7t1#
对于初学者,我认为有1个END太多或1个CASE太少,因为1个CASE有4个END和2个ELSE:
经过一番思考,这可能是你想要的解决方案: