SQL案例 - 使用SELECT

Ran*_*ton 0 sql t-sql stored-procedures case

我在使用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
Run Code Online (Sandbox Code Playgroud)

p.c*_*ell 7

试试这个:

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
Run Code Online (Sandbox Code Playgroud)

  • @ a1ex07,你应该只有一半回答然后编辑.不知道你怎么样? (2认同)