我必须重复两次CASE声明,并且我想知道是否有办法巩固它。
基本上,我有一个:
IProfileService
问题是我需要根据CASE语句将DATEADD发送到open_time。我不知道如何将它合并在一起,所以我要做两次。 像:
GetProfileDataAsync
有没有办法让我不必重复整个CASE状态?
答案 0 :(得分:0)
使用BETWEEN?
a between b and c
请注意,两者之间是“包含”,因此a <= b AND b <= c
为{{1}}。
答案 1 :(得分:0)
您可以将其写为:
where (month(open_time) = 1 and
cast(dateadd(hour, -5, open_time) as date) between '2016-11-01' and '2016-11-30'
) or
(month(open_time) <> 1 and
cast(dateadd(hour, -4, open_time) as date) between '2016-11-01' and '2016-11-30'
)
我不喜欢使用between
date
/ time
值的 month(open_time) <> 1 and
cast(dateadd(hour, case when month(open_time) = 1 then -5 else -4 end, open_time
) as date) between '2016-11-01' and '2016-11-30'
。在这种情况下,值显式一个日期,所以它看起来不会太混乱。
或者,如果您愿意:
git checkout --merge path/to/file