如何解决对 oracle 表列中分隔列的内容求和
我在 oracle 数据库表中有一个列,该列以逗号分隔。我需要对逗号分隔的数字求和并显示。
存储过程可能是一种选择。经过多次谷歌搜索后,我也找到了以下解决方案,例如 COL1、COL2、COL3、AMOUNT。这里的 AMOUNT 是逗号分隔的,如下所示,
123423,23523,5454,242342
经过多次搜索找到了解决方案,
select
a.COL1 as COL1,a.COL2 as COL2,a.COL2 as COL3,sum(REGEXP_SUBSTR(a.AMOUNT,'\d+',1,occ)) as SUM
from
TBL1 a,(select level occ from DUAL connect by level < 3000)
group by a.COL1,a.COL2,a.COL3;
但这里的问题是这是一张巨大的桌子,而且由于是 group by,所以需要很长时间。由于我们在单行的单个列值中汇总数据而不与其他行聚合,因此是否有执行相同操作的方法?
解决方法
这张表的糟糕设计已经给你带来了问题,但这个解决方案可能会奏效:
SELECT
a.COL1 as COL1,a.COL2 as COL2,a.COL2 as COL3,(
SELECT SUM(trim(regexp_substr(amount,'[^,]+',1,LEVEL)))
FROM dual
CONNECT BY regexp_substr(amount,LEVEL) IS NOT NULL
) as AMOUNT
FROM tbl1 a;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。