使用 Case 语句作为别名
Using a Case statement for an alias
我正在尝试根据变量
更改列的 header
目前我有
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
现在这个 return 是我正确角色所需的数据,但是有没有办法根据变量将第二列的 header 更改为
COUNT(EntityId) AS CASE @@Role
WHEN 2 THEN 'Tickets Processed'
WHEN 3 THEN 'Tickets Reviewed'
END
编辑:
当前结果示例:
@@Role = 2 or @@Role = 3
两个return:
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
...
您可以使用动态 sql,也可以根据 @@role
变量拆分逻辑:
IF @@Role = 2 THEN {do Query A}
ELSE {do Query B}
但是您绝对不能将列别名基于非动态查询上下文中的变量值。
我正在尝试根据变量
更改列的 header目前我有
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
现在这个 return 是我正确角色所需的数据,但是有没有办法根据变量将第二列的 header 更改为
COUNT(EntityId) AS CASE @@Role
WHEN 2 THEN 'Tickets Processed'
WHEN 3 THEN 'Tickets Reviewed'
END
编辑:
当前结果示例:
@@Role = 2 or @@Role = 3
两个return:
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
...
您可以使用动态 sql,也可以根据 @@role
变量拆分逻辑:
IF @@Role = 2 THEN {do Query A}
ELSE {do Query B}
但是您绝对不能将列别名基于非动态查询上下文中的变量值。