TSQL;通过聚合来转动结果的方法

时间:2016-06-27 20:57:38

标签: tsql

我正在尝试为照片上的示例代码生成结果。 测试代码我附加工作但部分工作,我只需要单行West,South ...然后在每个桶中计数。这可能与TSQL 2012有关。 TX Sample of input output click here

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

1 个答案:

答案 0 :(得分: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;