2013-08-20 3 views
1

Я хочу использовать случай в КТР с этим кодом:Как я могу использовать приложение Case в CTE tsql?

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 

Эта ошибка является:

Msg 156, Level 15, State 1, Line 5
Неправильный синтаксис около 'Case' ключевых слов ,

Как я могу использовать приложение Case в CTE?

ответ

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 
Смежные вопросы