SQL Case - с помощью SELECT - PullRequest
       27

SQL Case - с помощью SELECT

0 голосов
/ 02 сентября 2011

У меня проблемы с использованием оператора select для установки возвращаемого значения в операторе CASE ... Может кто-нибудь взглянуть?

DECLARE @SystemTypeId int
SELECT @SystemTypeId = [SystemTypeId] FROM [Properties] WHERE [Id] = @PropertyId

SET @RETURN_VAL =
    CASE @SystemTypeId
      WHEN 2 THEN (SELECT [Created] FROM [Assets] WHERE [Id] = @AssetId) 
      WHEN 3 THEN (SELECT dbo.GetAssetValueById([CreatedBy])
                   FROM [Assets]
                   WHERE [Id] = @AssetId)
      WHEN 9 THEN (SELECT [LastModified]
                   FROM [Assets]
                   WHERE [Id] = @AssetId)
      ELSE NULL
    END

1 Ответ

7 голосов
/ 02 сентября 2011

Попробуйте это:

SELECT @RETURN_VAL =
        CASE @SystemTypeId
            WHEN 2 THEN  [Created] 
            WHEN 3 THEN  dbo.GetAssetValueById([CreatedBy]) 
            WHEN 9 THEN [LastModified] 
            ELSE NULL
        END 
FROM [Assets] 
WHERE [Id] = @AssetId
...