你甚至可以在这样的选择中添加if语句,还是必须使用Case语句来实现我在这里做的事情?我目前遇到语法错误:
Select
field1,
field2,
If( @CurrentDate = @lastDate and @CurrentWeek = @lastWeek)
select @CurrentWeek,
.... rest of select statement
答案 0 :(得分:2)
您需要使用CASE
。但请注意,您可以将CASE用作SWITCH
和IF ... THEN ... ELSEIF ... ELSE
,因此您可以灵活使用。
例如:
DECLARE @flag INT
SET @flag = 1
-- Switch
SELECT CASE @flag WHEN 1 THEN 'Condition True'
WHEN 0 THEN 'Condition FALSE'
ELSE 'Condition Invalid'
END
-- If / elseif / else
SELECT CASE WHEN @flag = 1
THEN 'Condition True'
WHEN @flag = 0 AND @@SERVERNAME = 'TotallyUnrelatedToFlag'
THEN 'Condition FALSE'
ELSE 'Condition Invalid'
END
在您的示例中,您似乎需要符合
的内容Select
field1,
field2,
CASE WHEN (@CurrentDate = @lastDate and @CurrentWeek = @lastWeek)
THEN @CurrentWeek
ELSE NULL
END As field3
答案 1 :(得分:1)
听起来你想要CASE
声明
Select
field1,
field2,
case when @CurrentDate = @lastDate and @CurrentWeek = @lastWeek
then @CurrentWeek else '' end
.... rest of select statement
如果你想使用IF
语句,那么你会想要使用这样的东西:
If (@CurrentDate = @lastDate and @CurrentWeek = @lastWeek)
begin
-- place the one select statement here
select ...from
end
else
begin
-- place the alternate select here
select... from
end
答案 2 :(得分:1)
您必须使用案例陈述。 TSQL中的IF...ELSE构造可用于有条件地执行SQL语句。它不能在 SQL语句中使用。请阅读明确的documentation。
答案 3 :(得分:0)
试试这个:
Select
field1,
field2,
CASE WHEN @CurrentDate = @lastDate and @CurrentWeek = @lastWeek THEN @CurrentWeek ELSE '' END as Week,