按OrgName分组,但由TotalCount汇总

时间:2014-03-19 15:38:57

标签: sql-server sql-server-2008 common-table-expression

我想使用下面的代码按OrgName对结果进行分组,但使用TotalCount汇总计数

结果与下面的屏幕截图类似:(抱歉,由于保密协议,我不得不编辑信息。)

enter image description here

Orgname分组正确。但是,我有点麻烦卷起totalCount。

由于

WITH
ctePreAgg AS
(
 SELECT (ElectionName + ' - ' + CAST(ClosingDate AS VARCHAR(12))) electionName, CASE WHEN Position='Member' THEN '' ELSE Position END As Position, CASE WHEN c.CurrentOfficeHolder='Incumbent' THEN CandidateName + '('+ c.CurrentOfficeHolder + ')' ELSE CandidateName END As CandidateName , c.PositionId,COUNT(*) TotalVotes 
   FROM Candidates c 
   JOIN Positions p ON c.PositionId = p.PositionId
   JOIN Elections e on c.ElectionId = e.ElectionId
  WHERE c.ElectionId IN (1,2,3)
  GROUP BY Position, CandidateId, CandidateName,c.PositionId,CurrentOfficeHolder,AnswerType,ElectionName, ClosingDate
)

  SELECT [OrgName] = CASE WHEN GROUPING(mh.PositionId) = 0 THEN MAX(mh.Position)  ELSE mh.ElectionName END
        ,Names = CASE WHEN GROUPING(mh.PositionId) = 0 THEN MAX(mh.CandidateName)    ELSE '' END
        ,PositionId    = CASE WHEN GROUPING(mh.PositionId) = 0 THEN mh.PositionId   ELSE '' END
        ,TotalCount = CASE WHEN GROUPING(mh.PositionId) = 0 THEN COUNT(*) ELSE '' END
  FROM  ctePreAgg mh
  GROUP BY ElectionName,PositionId WITH ROLLUP
  HAVING GROUPING(mh.ElectionName) = 0
  ORDER BY mh.ElectionName, GROUPING(mh.PositionId) DESC, mh.PositionID;

0 个答案:

没有答案
相关问题