【问题标题】:Postgres Aggregating conditional sumPostgres聚合条件总和
【发布时间】:2014-06-04 06:41:13
【问题描述】:

我正在尝试汇总条件产品以获得订单的总重量(我希望这是有道理的)。我得到错误:

错误:聚合函数调用不能嵌套
第 6 行: , SUM ( CASE WHEN pc.type = 'TEES' THEN (SUM (opd.qt...

这是查询摘录:

SELECT DISTINCT
         o.work_order_number dn
       , SUM(opd.qty) units
       , SUM (CASE  WHEN pc.type = 'TEES' THEN (SUM (opd.qty) * .75)
            WHEN pc.type = 'JERSEYS' THEN (SUM (opd.qty) * 1.5)
        END) AS weight

【问题讨论】:

    标签: sql postgresql-9.1


    【解决方案1】:

    试试:

    SELECT o.work_order_number dn 
         , SUM(opd.qty) units 
         , SUM ( opd.qty * CASE pc.type 
                               WHEN 'TEES' THEN 0.75 
                               WHEN 'JERSEYS' THEN 1.5 
                           END ) AS weight
    FROM ...
    GROUP BY o.work_order_number
    

    【讨论】:

      【解决方案2】:

      你可以做的是嵌套你的选择语句,例如

      select sum(weight),sum(etc) 
      from (
          SELECT DISTINCT o.work_order_number dn 
                       , (opd.qty) units 
                       , ( CASE WHEN pc.type = 'TEES' THEN ((opd.qty) * .75) 
                                WHEN pc.type = 'JERSEYS' THEN ((opd.qty) * 1.5) END) AS weight)
      ).
      

      所以第一个 select 语句处理你的 case 语句,第二个 select 语句总结你的字段。

      【讨论】:

        猜你喜欢
        • 2013-02-21
        • 1970-01-01
        • 2022-01-07
        • 1970-01-01
        • 2020-02-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-07
        相关资源
        最近更新 更多