【问题标题】:SUM Values within SQL based on a column基于列的 SQL 中的 SUM 值
【发布时间】:2020-04-21 02:44:30
【问题描述】:

我有一张如下表:

我想转换数据,使最终产品看起来像这样:

这在 Excel 中很容易完成,但我希望能够通过 SQL 来完成,这样我就可以自动生成报告。

我尝试了以下不起作用的代码:

SELECT 
SKU,
SUM(totals,ordered = 'Web') as Web_orders,
SUM(totals,ordered = 'App') as App_orders

FROM A

GROUP BY SKU

【问题讨论】:

    标签: sql postgresql conditional-aggregation


    【解决方案1】:

    您可以使用大小写表达式:

    SELECT
      sku,
      SUM(case when ordered = 'web' then totals else 0 end) as "web",
      SUM(case when ordered = 'app' then totals else 0 end) as "app"
    FROM A
    GROUP BY sku
    

    【讨论】:

      【解决方案2】:

      这将起作用:

      SELECT 
      SKU,
      SUM(totals) filter (where ordered='web') as Web_orders,
      SUM(totals) filter (where ordered='app') as App_orders
      FROM A
      
      GROUP BY SKU
      ORDER by SKU;
      

      如果你想要大写字母,你需要用“”包围列名。

      【讨论】:

        猜你喜欢
        • 2018-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多