2016-04-15 10 views
0

私はT-SQLで複製するMS Accessのクロスタブのクエリを持っています。 T-SQLテーブル '#tmpZSPO_DMD'のパーツ、場所、数量、FiscalMonthPeriodがあります。私が走ると、データは以下のようになります。クロスタブTSQLwithグループのピボットで

Part LOCATION Qty FiscalMonthPeriod 
123 4040_0086  1  CON00 
123 4040_0086  1 CON00 
123 4200_0010  1 CON00 
123 2070_0060  2 CON01 
123 2080_0061  1 CON01 
123 4040_0070  1 CON02 
123 4040_0070  2 CON02 
123 4040_0086  1 CON02 
123 2020_0060  2 CON03 
123 2020_0064  1 CON03 
123 2040_0060  1 CON03 
123 4040_0061  1 CON03 
123 4040_0061  1 CON03 
123 4040_0069  1 CON03 
123 4040_0070  1 CON03 

私は以下の結果を得るために探しています。

Part LOCATION CON00 CON01 CON02 CON03 
123 2020_0060        2 
123 2020_0064        1 
123 2040_0060        1 
123 2070_0060    2  
123 2080_0061    1  
123 4040_0061         2 
123 4040_0069         1 
123 4040_0070      3  1 
123 4040_0086  2    1 
123 4200_0010  1 
+1

は、PIVOTはStackOverflowの中で最も重複話題の一つであります –

答えて

0

非常に単純なPIVOTがジョブを実行します。私が思う

SELECT * 
FROM 
(
    SELECT Part, LOCATION, Qty, FiscalMonthPeriod 
    FROM @Table 
) t 
PIVOT 
(
    SUM(Qty) 
    FOR FiscalMonthPeriod IN ([CON00], [CON01], [CON02], [CON03]) 
) p 
0
SELECT tm.PART, tm.Location, 
    SUM(IIF(tm.FiscalMonthPeriod= 'CON00', [Sum], NULL)) As CON00, 
    SUM(IIF(tm.FiscalMonthPeriod= 'CON01', [Sum], NULL)) As CON01, 
    SUM(IIF(tm.FiscalMonthPeriod= 'CON02', [Sum], NULL)) As CON02, 
    SUM(IIF(tm.FiscalMonthPeriod= 'CON03', [Sum], NULL)) As CON03 
    FROM #tmpZSPO_DMD tm 
    GROUP BY tm.PART, tm.Location; 
0
Select Part 
     ,LOCATION 
     ,ISNULL(CON00 , 0) AS CON00 
     ,ISNULL(CON01 , 0) AS CON01 
     ,ISNULL(CON02 , 0) AS CON02 
     ,ISNULL(CON03 , 0) AS CON03 
FROM tablename T 
    PIVOT (SUM(Qty) 
     FOR FiscalMonthPeriod 
     IN(CON00 , CON01, CON02, CON03) 
     )p