1

さまざまなソースからデータを取得して、3つの非常によく似たテーブルを作成する手順があります。

Metric          | Tickets   |Band
______________________________________
Acknowledgement | 45        | New
Acknowledgement | 23        | Within
Acknowledgement | 16        | Near
Acknowledgement | 2         | Very Near

Metric     | Tickets   |Band
___________________________________
Escalation | 10        | New
Escalation | 43        | Within
Escalation | 81        | Near
Escalation | 6         | Very Near

Metric| Tickets   |Band
___________________________________
Fixed | 34        | New
Fixed | 52        | Within
Fixed | 36        | Near
Fixed | 4         | Very Near

さて、私はそれらを何らかの方法で組み合わせて、このような1つのテーブル出力を作成したいと思います。

Metric          | New   | Within | Near | Very Near
_____________________________________________________
Acknowledgement | 45    | 23     | 16   | 2
Escalation      | 10    | 43     | 81   | 6
Fixed           | 34    | 52     | 36   | 4

MS SQLServerでこれを実現するにはどうすればよいですか?

4

2 に答える 2

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;
于 2012-08-29T00:00:26.887 に答える
4

これはあなたが望むものを手に入れるべき偽のピボットです。次に、テーブルごとにこのクエリを結合します。

SELECT 
    Metric,
    MAX( CASE Band WHEN 'New' THEN Tickets ELSE '' END ) New, 
    MAX( CASE Band WHEN 'Within' THEN Tickets ELSE '' END ) Within, 
    MAX( CASE Band WHEN 'Near' THEN Tickets ELSE '' END ) Near, 
    MAX( CASE Band WHEN 'Very Near' THEN Tickets ELSE '' END ) [Very Near]
FROM 
    table
GROUP BY 
    Metric

UNION
...
于 2012-08-28T23:55:51.297 に答える