SQL Server:在CASE语句中设置一个变量

Bob*_*bby 18 t-sql sql-server

是否可以在case语句中设置变量?我的代码不起作用.谢谢大家.

CREATE PROCEDURE spReport
@q1 INT,
@q2 INT
AS
BEGIN

-- Dates for the 2 different quarters to be viewed
DECLARE @StartDateQ1 DATETIME
DECLARE @EndDateQ1 DATETIME
DECLARE @StartDateQ2 DATETIME
DECLARE @EndDateQ2 DATETIME

SELECT
CASE @q1
    WHEN 1 THEN SET @StartDateQ1 = '20130401'
END
Run Code Online (Sandbox Code Playgroud)

Mar*_*ith 36

您可以使用

SET @StartDateQ1 = CASE @q1
                     WHEN 1 THEN '20130401'
                   END 
Run Code Online (Sandbox Code Playgroud)

根据CASE表达式设置单个变量的值.

如果您的真实逻辑更复杂(例如需要在条件内设置多个变量),请查看IF ... ELSE.

CASE 表达式不是控制结构的流程.


Tar*_*zan 5

这是使用 IF 语句解决此问题的另一种方法:

IF @q1 = 1
BEGIN
    SET @StartDateQ1 = '20130401'
END
Run Code Online (Sandbox Code Playgroud)