Union,Join或GroupBy

koo*_*e98 1 t-sql sql-server sql-server-2008

我有程序从各种来源拉取数据给我3个非常类似的表.

Metric          | Tickets   |Band
______________________________________
Acknowledgement | 45        | New
Acknowledgement | 23        | Within
Acknowledgement | 16        | Near
Acknowledgement | 2         | Very Near
Run Code Online (Sandbox Code Playgroud)

Metric     | Tickets   |Band
___________________________________
Escalation | 10        | New
Escalation | 43        | Within
Escalation | 81        | Near
Escalation | 6         | Very Near
Run Code Online (Sandbox Code Playgroud)

Metric| Tickets   |Band
___________________________________
Fixed | 34        | New
Fixed | 52        | Within
Fixed | 36        | Near
Fixed | 4         | Very Near
Run Code Online (Sandbox Code Playgroud)

现在,我想以某种方式将它们组合在一起,以便像这样有一个表输出

Metric          | New   | Within | Near | Very Near
_____________________________________________________
Acknowledgement | 45    | 23     | 16   | 2
Escalation      | 10    | 43     | 81   | 6
Fixed           | 34    | 52     | 36   | 4
Run Code Online (Sandbox Code Playgroud)

我怎样才能在MS SQLServer中实现这一点呢?

Aar*_*and 5

这不需要为每个表重复所有聚合和CASE表达式 - 只需要一个简单的联合,然后你可以转向它.

SELECT Metric, [New], [Within], [Near], [Very Near] FROM 
(
            SELECT Metric, Tickets, Band FROM dbo.table_a
  UNION ALL SELECT Metric, Tickets, Band FROM dbo.table_b
  UNION ALL SELECT Metric, Tickets, Band FROM dbo.table_c
) 
AS x PIVOT 
(
  MAX(Tickets) FOR Band IN ([New],[Within],[Near],[Very Near])
) AS p;
Run Code Online (Sandbox Code Playgroud)