我希望有人可以帮助我。
我希望在excel中找到来自同一字段的多个值的总和是否可能?
我的示例栏是:
0,0,1,1,1,2
我想将所有这些值加在一起,并在输出中有一个总列
由于
答案 0 :(得分:5)
select
id,
list,
sum(regexp_substr(list, '\d+', 1, occ)) as total
from
your_table,
(select level occ from dual connect by level < 2000)
group by id, list
order by 1
答案 1 :(得分:0)
请尝试:
SET SERVEROUTPUT ON
DECLARE
lv_formula VARCHAR2(1000):='0,0,1,1,1,2';
result NUMBER;
BEGIN
lv_formula:=replace(lv_formula, ',', '+');
EXECUTE IMMEDIATE 'BEGIN :out := '||lv_formula||'; END;' USING OUT result;
DBMS_OUTPUT.PUT_LINE('Answer is...' || result);
END;
答案 2 :(得分:0)
建立在@ techdo的答案之上(并且请求他或者接受他的答案 - 我正在做的就是充实了这一点)这是一种方法:
首先,构建一个实现@ techdo代码的函数:
CREATE OR REPLACE FUNCTION SUM_CSV(pin_Csv IN VARCHAR2)
RETURN NUMBER
DETERMINISTIC
IS
strFormula VARCHAR2(1000);
nResult NUMBER;
BEGIN
strFormula := REPLACE(pin_Csv, ',', '+');
EXECUTE IMMEDIATE 'BEGIN :out := ' || strFormula || '; END;' USING OUT nResult;
RETURN nResult;
END SUM_CSV;
请注意,该函数必须是确定性的 - 也就是说,它总是为给定的输入值产生相同的结果。
然后创建一个包含虚拟列的表,该列调用函数SUM_CSV:
CREATE TABLE csv_test
(text VARCHAR2(1000),
total NUMBER AS (SUM_CSV(text))); -- virtual column
现在,插入表格:
INSERT INTO CSV_TEST(TEXT) VALUES('1,2,3,4,5');
提交插入,然后返回值:
SELECT * FROM CSV_TEST;
你得到了
TEXT TOTAL
1,2,3,4,5 15
分享并享受。