【发布时间】:2021-03-10 00:22:27
【问题描述】:
我在下面有一个类似 [Original] 的表格。
我想按 [结果] 之类的分组字段求和。
有没有人有想法进行此查询?
提前感谢您的帮助。
WITH t1 as (
SELECT 1 AS ID, 'A' AS FIELD, 1 AS VAL FROM dual
UNION SELECT 2 AS ID, 'A' AS FIELD, 2 AS VAL FROM dual
UNION SELECT 3 AS ID, 'A' AS FIELD, 1 AS VAL FROM dual
UNION SELECT 4 AS ID, 'B' AS FIELD, 2 AS VAL FROM dual
UNION SELECT 5 AS ID, 'B' AS FIELD, 2 AS VAL FROM dual
UNION SELECT 6 AS ID, 'B' AS FIELD, 1 AS VAL FROM dual
UNION SELECT 7 AS ID, 'A' AS FIELD, 3 AS VAL FROM dual
UNION SELECT 8 AS ID, 'A' AS FIELD, 2 AS VAL FROM dual
UNION SELECT 9 AS ID, 'A' AS FIELD, 1 AS VAL FROM dual
)
SELECT *
FROM t1
[Original Data]
ID FIELD VAL
1 A 1
2 A 2
3 A 1
4 B 2
5 B 2
6 B 1
7 A 3
8 A 2
9 A 1
[Result]
ID FIELD VAL
1 A 4
4 B 5
7 A 6
【问题讨论】:
-
您已经尝试过哪个查询,有什么问题?
-
当然,Oracle 确实有一个想法、一个描述,而且,some examples 就在
GROUP BY clause的文档部分。请描述您的问题。 -
通过使用普通的group by,它只返回A,B的两条记录。在这个问题中,我想处理'A'的两组。感谢 Tejash、MT0、GMB,现在我知道这被称为间隙和孤岛问题。感谢您的加入。
标签: sql oracle aggregate-functions gaps-and-islands