2015-03-25 2 views
0

Я пытаюсь назначить переменную для оператора case в моей хранимой процедуре.Назначить переменную для оператора case в хранимой процедуре SQL Server

Вот мой код:

CREATE Procedure [dbo].[myProcedure] 
(
    @StartDate DATETIME = NULL, 
    @EndDate DATETIME = NULL, 
) 
AS 
    DECLARE @Type varchar 
    SET @Type = NULL 
BEGIN 

    SELECT DISTINCT 
     @Type = CASE 
        WHEN myTable.myVariable = '1' 
        THEN 'No' 
       END AS 'Test' 
    FROM myTable 
    WHERE myTable.myDate BETWEEN @StartDate AND @EndDate 
END 

Ошибка я получаю что myTable.myVariable нескольких частей Идентификатор не может быть связан .... я мог бы делать это совершенно неправильно, хотя ... Я просто пытаясь присвоить мое дело о переменной ...

+0

Если не ошибаюсь, вы не можете комбинировать инициализации переменных с именем псевдонима столбца источника. Попробуйте удалить имя псевдонима 'AS 'Test'' –

+0

Я не понимаю, что вы пытаетесь выполнить - в основном потому, что вы пытаетесь присвоить несколько строк из результатов вашего запроса скалярной переменной. Также не забудьте определить длину вашего varchar в '@ type' – Kritner

ответ

0

Это работает для меня:

DECLARE @I1 BIGINT 
SET @I1 = (
SELECT Top 1 CASE WHEN LIST_PRICE=75 THEN [EAN] 
     ELSE 0 END SPECIAL 
    FROM dbo.x1) 
    SELECT @I1