Использование оператора Case для псевдонима - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь изменить заголовок столбца на основе переменной

В настоящее время у меня есть

SELECT
    (CASE 
        WHEN GROUPING(CASE @@Role 
                         WHEN 2 THEN Processor 
                         WHEN 3 THEN Reviewer 
                      END) = 1 
           THEN 'Total' 
           ELSE (CASE @@Role 
                    WHEN 2 THEN Processor 
                    WHEN 3 THEN Reviewer 
                 END) 
     END) AS 'User',
    COUNT(EntityId) AS 'Tickets Processed'
FROM
    table
WHERE
    conditions
GROUP BY
    CASE @@Role 
       WHEN 2 THEN Processor 
       WHEN 3 THEN Reviewer 
    END WITH ROLLUP

Сейчас это возвращает данные, необходимые для правильной роли, однакоЕсть ли способ изменить заголовок второго столбца на основе переменной на что-то вроде

COUNT(EntityId) AS CASE @@Role 
                      WHEN 2 THEN 'Tickets Processed' 
                      WHEN 3 THEN 'Tickets Reviewed'  
                   END

РЕДАКТИРОВАТЬ:

Пример текущего результата:

@@Role = 2 or @@Role = 3

Оба возвращают:

User        Tickets Processed
-----------------------------
Steve       1
Gerald      3
John        1
Paul        2
Peter       5
Total       12

Желаемый результат:

@@Role = 2 

User        Tickets Processed
-----------------------------
Steve       1
Gerald      3
John        1
Paul        2
Peter       5
Total       12

@@Role = 3

User        Tickets Reviewed
-----------------------------
Steve       1
Gerald      3
John        1
Paul        2
Peter       5
Total       12

Пример данных

EntityID    Processor   Reviewer
----------------------------------
1           Peter       Bob
2           Peter       Paul
3           Peter       Bob
4           John        Paul
5           Peter       Bob
6           Peter       Bob
...

1 Ответ

0 голосов
/ 29 мая 2018

Вы можете использовать динамический sql или разделить логику на основе переменной @@role:

IF @@Role = 2 THEN {do Query A}
ELSE {do Query B}

Но вы определенно не можете основывать псевдоним столбца на значении переменной в контекстенединамического запроса.

...