基于列的 SQL 中的 SUM 值

Posted

技术标签:

【中文标题】基于列的 SQL 中的 SUM 值【英文标题】:SUM Values within SQL based on a column 【发布时间】: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

【问题讨论】:

【参考方案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;

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

【讨论】:

以上是关于基于列的 SQL 中的 SUM 值的主要内容,如果未能解决你的问题,请参考以下文章

SQL Pivot基于一列的Max

基于 SQL 中的行 ID 合并列的问题

用于生成基于新列的匹配字段值的 SQL 逻辑

基于其他列的列的SQL总和[关闭]

算法或 SQL:查找一组列的条件,确保结果集在特定列中的值始终 > 0

DB2 SQL 比 SUM+CASE 更好的方法来获取基于 ID 的唯一值计数