2016-04-15 5 views
0

У меня есть запрос вкладки cros в MS Access, который я хочу реплицировать в T-SQL, В таблице T-SQL '#tmpZSPO_DMD' есть Part, Location, Qty, FiscalMonthPeriod. и когда я запускаю, данные выглядят ниже.Перекрестная вкладка Pivot в TSQLwith group by and order by

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