Oracle:仅对存在重复行的列求和并改造视图去重
修改Oracle视图实现分组求和
嘿,我明白你的需求啦——你现在的TESTVIEW.VW_SUM__DOCUMENTS视图返回了重复的document_num行,想要修改成按document_num分组,对amount求和,最终返回无重复的结果集对吧?
修改后的视图创建语句
直接用GROUP BY对document_num分组,配合SUM()聚合函数就能实现:
CREATE OR REPLACE FORCE VIEW "TESTVIEW"."VW_SUM__DOCUMENTS" ( "DOCUMENT_NUM", "AMOUNT") AS SELECT vw_container_documents.document_num, SUM(vw_container_documents.amount) AS amount FROM vw_container_documents WHERE vw_container_documents.parent_id IS NOT NULL GROUP BY vw_container_documents.document_num;
改动说明
- 将原来直接提取
amount的逻辑替换为SUM(vw_container_documents.amount),这样会自动把同一document_num下的所有金额累加 - 新增
GROUP BY vw_container_documents.document_num约束,确保每个document_num只生成一行结果,彻底消除重复
预期返回结果
修改后的视图会输出这样的无重复结果集:
| document_num | amount |
|---|---|
| 25 | 4 |
| 23 | 2 |
内容的提问来源于stack exchange,提问作者e2rabi
相关产品推荐
相关产品推荐

