2016-09-14 5 views
-1

既存のビューテーブルからこの特定の出力を得るためのT-SQLコードは何ですか?私は、SQL Server 2016を実行していて、私は次の出力を与える次のような単純なT-SQLクエリを持って

問合せ:

SELECT * from ExtrasViewTable 

出力:

ID  Property  F&B SPA TotalExp  Mth 
    1  ABC  100  0  100  2014-09-01 
    2  XYZ   50 20  70  2014-10-01 

出力を次のように変更したい:

ID  Property  Mth   ExpCat  ExpCatAmt 
    1  ABC  2014-09-01  F&B   100 
    1  ABC  2014-09-01  SPA    0 
    1  ABC  2014-09-01  TotalExp  100 
    2  XYZ  2014-10-01  F&B    50 
    2  XYZ  2014-10-01  SPA    20 
    2  XYZ  2014-10-01  TotalExp  70 

これを達成するために正しいT-SQLコードを見つけるのは苦労しています。私はいくつかの基本的なPivot操作を試みましたが、間違っていました。

+0

ExpCatとExpCatAmtは、ユーザ定義の名前です。 – user3115933

+0

これはアンピボットです。 Googleは例を挙げている。 –

答えて

0

あなたはUNPIVOTを使用することができ、

DECLARE @ExtrasViewTable TABLE (
    ID INT 
    ,Property VARCHAR(10) 
    ,[F&B] INT 
    ,SPA INT 
    ,TotalExp INT 
    ,Mth DATE 
    ) 

insert into @ExtrasViewTable values 
(1,'ABC',100, 0,100,'2014-09-01') 
,(2,'XYZ', 50,20, 70,'2014-10-01') 

SELECT ID,Property,Mth,Expcat,Expcatamt 
FROM @ExtrasViewTable 
unpivot(Expcatamt FOR Expcat IN (
      [F&B] 
      ,SPA 
      ,TotalExp 
      )) unpiv; 
関連する問題