2016-07-28 4 views
0

私はCategoryピボットを動的に使用するにはどうすればよいですか?

Profile Batch Doubles Feeder Image Hardware 
A   1  1  0  2  1 
B   1  2  3  0  4 
A   1  5  1  6  1 
A   1  2  1  2  7 

どこDoublesFeederImageHardwareは、イベントカテゴリです。という名前のテーブルを持って、MS SQL Serverの2008R2を使用しています

カラム名プロファイル、バッチは修正されましたが、後でさらにイベントカテゴリを追加することがあります。 すべてのイベントカテゴリをピボットとダイナミックで個別に合計します。 私の予想される出力は、より多くのイベントの種類

EventCategory Occurence 
    Doubles   10 
    Feeder   5 
    Image   10 
    Hardware  13 

は、私は、意味より多くのカテゴリーが追加されたとき、私はこれらのイベントカテゴリがアンピボットクエリで動的に追加する必要が後で追加することができる、である、 例:予想される出力

EventCategory Occurence 
     Doubles   10 
     Feeder   5 
     Image   10 
     Hardware  13 
     Late    6 
     Sensor   20 
     .    . 
     .    . 
     .    . --And so on 

私はまだ何も試していません、私に動的なunpivotクエリをお勧めします。 私はその質問ではっきりしていると思います、どんな助けもありがたいです。

+2

実際にはピボット、[アンピボット](http://stackoverflow.com/q/18775409/11683)ないしたいように見えるが。 – GSerg

+0

はい、解決策を教えてください。 – Ruhaan

+0

リンクをクリックできますか? – GSerg

答えて

1

私は、これは何が必要だと思う:

CREATE TABLE Category 
(
    [Profile] varchar(10), 
    Batch int, 
    Doubles int, 
    Feeder int, 
    [Image] int, 
    Hardware int 
) 

INSERT Category VALUES 
('A', '1', '1', '0', '2', '1'), 
('B', '1', '2', '3', '0', '4'), 
('A', '1', '5', '1', '6', '1'), 
('A', '1', '2', '1', '2', '7') 

DECLARE @query nvarchar(MAX); 

SELECT @query = COALESCE(
    @query+char(10)+'UNION ALL'+char(10)+'SELECT '+QUOTENAME(name,'''')+' EventCategory, SUM('+QUOTENAME(name)+') Occurence FROM Category', 
    'SELECT '+QUOTENAME(name, '''')+' EventCategory, SUM('+QUOTENAME(name)+') Occurence FROM Category') 
FROM sys.columns C WHERE [object_id]=OBJECT_ID('Category') 
AND name<>'Profile' 

EXEC (@query) 
+0

ありがとうPawel Dyl :) – Ruhaan

関連する問題