如何聚合两列的组合

时间:2017-05-09 18:09:19

标签: sql sql-server

我有获胜状态和获胜阶段,所以我不确定如何分组

我想要5组

  1. 展望和状态以展望阶段开放
  2. 资格和状态为合格阶段
  3. 开发和状态是开放阶段
  4. 解决方案和状态已作为解决方案阶段
  5. 打开
  6. 证明和状态作为证明阶段
  7. 打开
  8. 关闭,状态为关闭阶段
  9. 赢得状态,阶段=潜在客户,合格,开发,解决方案,证明,关闭,赢得
  10. 表1

    owneridname custom_totalamount  custom_phasename    statecodename
    ABC         900                 Prospect - 0%       Won
    ABC         800                 Qualify - 10%       Won
    ABC         700                 Develop - 20%       Won
    ABC         600                 Solution - 40%      Won
    ABC         500                 Proof - 60%         Won
    ABC         400                 Close - 80%         Won
    ABC         300                 Won - 100%          Won
    ABC         100                 Prospect - 0%       open
    ABC         200                 Prospect - 0%       open
    ABC         400                 Qualify - 10%       open
    ABC         200                 Qualify - 10%       open
    ABC         300                 Develop - 20%       open
    ABC         500                 Solution - 40%      open
    ABC         700                 Proof - 60%         open
    ABC         800                 Close - 80%         open
    

    预期结果

    owneridname custom_totalamount  custom_phasename 
    ABC         300                 Prospect - 0% 
    ABC         600                 Qualify - 10% 
    ABC         300                 Develop - 20% 
    ABC         500                 Solution - 40% 
    ABC         700                 Proof - 60% 
    ABC         800                 Close - 80% 
    ABC         4200                Won - 100%
    

    最后4200行我不知道如何生成

    SELECT 
    owneridname,sum(custom_totalamount),custom_phasename
      FROM table1
      group by owneridname,custom_phasename
    

1 个答案:

答案 0 :(得分:1)

您可以使用UNION ALL语句添加它。

SELECT owneridname, sum(custom_totalamount), custom_phasename
FROM @t
WHERE statecodename = 'open'
GROUP BY owneridname, custom_phasename
UNION ALL
SELECT owneridname, sum(custom_totalamount), 'Won - 100%'
FROM @t
WHERE statecodename = 'won'
GROUP BY owneridname