我试图创建一个视图,我需要把条件放在年,我尝试下面的代码,但我得到了一个错误。有人能请建议,如果可能的话。和输出这是必需的,我必须只使用CTE。错误如下:“if”附近的语法不正确
代码如下:
Declare @year varchar(20)
Set @year = ‘2022’;
With CTE as
(
If @year = ‘2022’
Begin
(
Select
@year ,
Prev_date = (select DATEADD(month, -1,GETDATE()))
)
End;
Else
Begin
(
Select @year,
Prev_date= (select DATEADD(month, -2,GETDATE()))
)
End;
)
Select *
From CTE
4条答案
按热度按时间5vf7fwbs1#
我不完全确定你想用你的cte实现什么,但是关于条件,你可以试着把下面的东西放到你的视图/查询/任何东西中:
c7rzv4ha2#
IF
、BEGIN
和END
与程序代码相关,不能在此上下文中使用。您的代码(无需进一步说明)可以替换为以下代码:
一张便条和一条建议:看起来(我说错了吗?2)你才刚刚开始学习。3请尽量保持SQL Server的编码指南。4我已经做了一些快速的改进。5下面是一个示例链接:https://blog.sqlauthority.com/2008/09/25/sql-server-guidelines-and-coding-standards/
mnowg1ta3#
您可以使用简单有效的查询,而不是使用CTE,后者应该用于复杂的查询。
bqf10yzr4#
你没有给予错误信息和你使用的数据库。我想你的sql应该是语法错误,请试试这个
BEGIN ... END;
必须与{..}
一起使用,以防其间有多个语句。希望这能有所帮助。