不确定我在这里做错了什么。你能纠正我吗?
我在我的存储过程中编写了这个逻辑,但是我收到了一个错误:
DECLARE @PERIOD AS VARCHAR(7)
BEGIN
IF(MONTH(GETDATE()) = 1 or MONTH(GETDATE()) = 2 or MONTH(GETDATE()) = 3)
BEGIN
SET @PERIOD = YEAR(GETDATE() + ' Q1'
END
ELSE IF(MONTH(GETDATE()) = 4 or MONTH(GETDATE()) = 5 or MONTH(GETDATE()) = 6)
BEGIN
SET @PERIOD = YEAR(GETDATE() + ' Q2'
END
ELSE IF(MONTH(GETDATE()) = 7 or MONTH(GETDATE()) = 8 or MONTH(GETDATE()) = 9)
BEGIN
SET @PERIOD = YEAR(GETDATE() + ' Q3'
END
ELSE IF (MONTH(GETDATE()) = 10 or MONTH(GETDATE()) = 11 or MONTH(GETDATE()) = 12)
BEGIN
SET @PERIOD = YEAR(GETDATE() + ' Q4'
END
END
错误是:
Msg 156,Level 15,State 1,Line 6
关键字' END'附近的语法不正确。Msg 156,Level 15,State 1,Line 10
关键字' END'附近的语法不正确。Msg 156,Level 15,State 1,Line 14
关键字' END'附近的语法不正确。Msg 156,Level 15,State 1,Line 18
关键字' END'附近的语法不正确。
答案 0 :(得分:5)
这很难阅读,遗憾的是语法问题很多。
您在SET
语句中遗漏了几个括号,而且您无法连接int
和varchar
。
试试这个......
DECLARE @PERIOD AS VARCHAR(7)
DECLARE @MONTHVAL INT, @YEARVAL VARCHAR(4)
SET @MONTHVAL = MONTH(GETDATE())
SET @YEARVAL = CONVERT(VARCHAR(4),YEAR(GETDATE()))
SET @PERIOD = CASE WHEN @MONTHVAL IN (1,2,3) THEN @YEARVAL + ' Q1'
WHEN @MONTHVAL IN (4,5,6) THEN @YEARVAL + ' Q2'
WHEN @MONTHVAL IN (7,8,9) THEN @YEARVAL + ' Q3'
WHEN @MONTHVAL IN (10,11,12) THEN @YEARVAL + ' Q4'
END
SELECT @PERIOD
答案 1 :(得分:2)
好的,所以我认为这就是你要找的东西。
{{1}}
抱歉,时间有限。我可能会在以后充实它,但我希望这会让你起步并运行。