1

このコードでcteのユースケースが欲しい:

Declare @DefinitionType Int = 1
;With Res
As
(
    Case @DefinitionType
        When 1 Then (Select [ActionId], [Title] From Actions)
        When 2 Then (Select [AreaId], [Title] From Areas)
        Else (Select [ContractorScopeId], [Title] From ContractorScopes)
    End
)
Select * From Res

そのエラーは次のとおりです。

メッセージ 156、レベル 15、状態 1、行 5
キーワード「Case」付近の構文が正しくありません。

CTE で Case ステートメントを使用するにはどうすればよいですか?

4

1 に答える 1

2

できません。

列のデータ型が互換性がある場合は、次のことができます

DECLARE @DefinitionType INT = 1;

WITH Res
     AS (SELECT [ActionId],
                [Title]
         FROM   Actions
         WHERE  @DefinitionType = 1
         UNION ALL
         SELECT [AreaId],
                [Title]
         FROM   Areas
         WHERE  @DefinitionType = 2
         UNION ALL
         SELECT [ContractorScopeId],
                [Title]
         FROM   ContractorScopes
         WHERE  @DefinitionType = 3)
SELECT *
FROM   Res 
于 2013-08-20T11:17:29.490 に答える