Подтвердить что ты не робот

SQL Server: установить переменную в выражении CASE

Можно ли установить переменную в оператор 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
4b9b3361

Ответ 1

Вы можете использовать

SET @StartDateQ1 = CASE @q1
                     WHEN 1 THEN '20130401'
                   END 

чтобы установить значение одной переменной в соответствии с выражением CASE.

Если ваша реальная логика более сложна (например, нужно установить несколько переменных внутри условия), посмотрите вместо IF ... ELSE.

CASE - выражение, а не поток управляющей конструкции.

Ответ 2

Вот еще один способ решить эту проблему с помощью оператора IF:

IF @q1 = 1
BEGIN
    SET @StartDateQ1 = '20130401'
END