【问题标题】:SQL group and condition sum in the last row最后一行的 SQL 组和条件总和
【发布时间】:2021-11-15 16:07:34
【问题描述】:

我有几个属于不同组的项目,有些是未知组。 我需要按日期计算每个组的总和。 我只是在 SQL 下尝试,但仍然不是我想要的:

with A as (
SELECT PG, EMANAGER_DATE,
  CASE WHEN (EMANAGER_DATE = '2021-09') THEN SUM(NET_VALUE_USD) ELSE 0 END AS "2021-09",
  CASE WHEN (EMANAGER_DATE = '2021-10') THEN SUM(NET_VALUE_USD) ELSE 0 END AS "2021-10",
  CASE WHEN (EMANAGER_DATE = '2021-11') THEN SUM(NET_VALUE_USD) ELSE 0 END AS "2021-11",
  CASE WHEN (EMANAGER_DATE = '2021-12') THEN SUM(NET_VALUE_USD) ELSE 0 END AS "2021-12"
  FROM table1
  GROUP BY PG, EMANAGER_DATE
)
select PG, max("2021-09") AS "2021-09", max("2021-10") AS "2021-10", max("2021-11") AS "2021-11", max("2021-12") AS "2021-12" from A GROUP BY PG

数据库:SAP HANA

数据:

Item PG NET_VALUE_USD EMANAGER_DATE
1 1 100 2021-09
2 1 200 2021-10
3 2 300 2021-09
4 2 400 2021-09
5 3 500 2021-09
6 3 200 2021-11
7 3 300 2021-11
8 900 2021-09

预期结果:

PG 2021-09 2021-10 2021-11
? 900 0 0
1 100 200 0
2 700 0 0
3 500 0 500
total 2200 200 500

【问题讨论】:

  • 看起来有时它们的值被添加,有时它们被重置。这是什么逻辑?
  • 我更新了我的数据,它们的值被添加了。
  • 我认为如果您在问题中添加一些文本会是个好主意。它有点像一个无法解释的 Jira-ticket,而不是 Stack Overflow 问题。
  • 你需要这个预期的结果吗?它是要显示的,还是要存储在某个地方的?你还尝试了什么?
  • 待展示。

标签: sql hana


【解决方案1】:

您可以调整查询并使用GROUPING SETS

SELECT (CASE WHEN GROUPING(PG) = 1 THEN 'Total' ELSE PG END) as PG,
       SUM(CASE WHEN EMANAGER_DATE = '2021-09' THEN NET_VALUE_USD ELSE 0 END) AS "2021-09",
       SUM(CASE WHEN EMANAGER_DATE = '2021-10' THEN NET_VALUE_USD ELSE 0 END) AS "2021-10",
       SUM(CASE WHEN EMANAGER_DATE = '2021-11' THEN NET_VALUE_USD ELSE 0 END) AS "2021-11",
       SUM(CASE WHEN EMANAGER_DATE = '2021-12' THEN NET_VALUE_USD ELSE 0 END) AS "2021-12"
FROM _SYS_BIC."APP_SCM/ZCV_APP_SCM_CTOS_PARENT_UNCONFIRMED_BACKLOG_P"
GROUP BY GROUPING SETS ( (PG), () );

【讨论】:

  • 感谢您的帮助,如果我有很多 EMANAGER_DATE 使用 pivot 怎么办?
  • @玉婷。 . .如果您想要摘要行,我认为您最好使用这种方法。
猜你喜欢
  • 2018-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
  • 1970-01-01
  • 1970-01-01
  • 2021-03-27
  • 2012-02-16
相关资源
最近更新 更多