2016-06-27 13 views
0

私は、そのサンプルコードの結果を写真のように生成しようとしています。 テストコード私は作品を部分的に付けましたが、部分的には西、南のためにただ一つの行が必要です。そして各バケットに数えています。これは、TSQL 2012年 のTx Sample of input output click hereTSQL;集計の結果をピボットする方法

WITH cte AS (SELECT 'WEST' Side, '2015-1-1' DD, 1 Status UNION ALL 
    SELECT 'WEST' Side, '2015-1-1' DD, 2 Status UNION ALL 
SELECT 'WEST' Side, '2015-1-1' DD, 2 Status UNION ALL 
SELECT 'WEST' Side, '2015-1-1' DD, 3 Status UNION ALL 
SELECT 'WEST' Side, '2015-1-1' DD, 3 Status UNION ALL 
SELECT 'WEST' Side, '2015-1-1' DD, 3 Status UNION ALL 
    SELECT 'South' Side, '2015-1-1' DD, 3 Status ) 
    --SELECT * FROM cte 

SELECT side, 
    case when Status= 1 then sum(1) else sum(0) end Complete, 
    case when Status= 2 then sum(1) else sum(0) end Cancel, 
    case when Status= 3 then sum(1) else sum(0) end Future 
    -- COUNT(*) TotalCC 
    FROM cte 
GROUP BY Side, Status 
ORDER BY 1 
+0

あなたのイメージを見直した後、それがあなたが目指している結果であれば、ここではPIVOT演算子が必要ないと思います。あなたが(DD列を除いた)上記のことが、私が考えることができる最良の解決策になります。 – DVT

答えて

0

この作品はウィルで可能ですか?

WITH PivotData AS 
(
    SELECT 
     Side 
     , 1 AS agg_col 
     , StatusOfSide 
    FROM 
     <table_name> 
) 

SELECT 
    Side 
    , [1] AS Complete 
    , [2] AS Cancel 
    , [3] AS Future 
FROM 
    PivotData 
    PIVOT (COUNT(agg_col) FOR StatusOfSide IN ([1], [2],[3])) p; 
関連する問題