如果两个字符串相同,我需要比较两个字符串,这意味着需要一个条件,而其他条件需要另一个条件,但是此代码对我不起作用。 欢迎任何更正和建议。 到目前为止,我在这里已经尝试过了。
declare @s1 varchar(10) = '2018',@s2 varchar(10) = '2019'
Select PersonalAbwesenheiten.PersonalNr,sum(PersonalAbwesenheiten.AnzahlTage) as totaltakenleaves from PersonalAbwesenheiten
Join Personal On personal.PersonalNr = PersonalAbwesenheiten.personalNr and PersonalAbwesenheiten.PersonalNr = 4 and PersonalAbwesenheiten.Status = 4
and PersonalAbwesenheiten.Abwesenheitstyp = 1
where
case when @s1 = @s2 Then
'2019-01-01' <= DatumBis And DatumVon <= '2019-12-31'
when @s1 <> @s2 Then
'2018-12-30' <= DatumBis And DatumVon <= '2019-01-05'
end
group by PersonalAbwesenheiten.PersonalNr
答案 0 :(得分:2)
您不能以这种方式使用CASE
表达式。一种方法是重构您的WHERE
子句以不使用CASE
:
WHERE
(@s1 = @s2 AND DatumBis BETWEEN '2019-01-01' AND '2019-12-31') OR
(@s1 <> @s2 AND DatumBis BETWEEN '2018-12-30' AND '2019-01-05')
CASE
表达式的谓词,即THEN
或ELSE
之后的谓词,必须是文字值,而不是逻辑表达式。