2016-11-28 2 views
0

私は以下のように、ファクトテーブルがあります。SQL Serverで列に行をトランスポーズする方法

Identifier | periodId | x | y | z 
    cc1    1   12  10 17 
    cc1    2   .. .. .. 
    cc2    1   ..  .. .. 

方法:私は以下のように、単一のフラット化テーブルを作成しようとしていますこれらのテーブルから

Table Types 

TypeId | Name 
    1  x 
    2  y 
    3  z 

Table Period: 

PeriodId | Date 
1   2014-01-31 
2   2015-01-31 



RowNumber | Value | TypeId | Identifier | PeriodId 
1   12  1   cc1   1 
2   10  2   cc1   2 
3   17  3   cc1   1 
..   30  ...   ...   .. 
..   60  1   cc2  1 
       23  2   cc2  2 

を上記の形式でデータを取得するためにクエリを実行できますか?

+0

[** Dynamic Pivot **](http://stackoverflow.com/questions/10404348/sql-server-dynamic-pivot-query)で、あなたの問題のいくつかの助けを見つけることができると思います。 –

答えて

0
INSERT INTO NewTable 
SELECT Identifier, PeriodId, 
    (SELECT Value FROM [Values] v2 WHERE v2.Identifier = v1.Identifier AND v2.PeriodId = v1.PeriodId AND v2.TypeId = 1) AS 'x', 
    (SELECT Value FROM [Values] v2 WHERE v2.Identifier = v1.Identifier AND v2.PeriodId = v1.PeriodId AND v2.TypeId = 2) AS 'y', 
    (SELECT Value FROM [Values] v2 WHERE v2.Identifier = v1.Identifier AND v2.PeriodId = v1.PeriodId AND v2.TypeId = 3) AS 'z' 
FROM [Values] v1 
GROUP BY Identifier, PeriodId 

これは必要なのですか?

関連する問題