0

我希望有一个人可以帮助我。

我正在寻找 excel 中同一字段的多个值的总和,这可能吗?

我的示例专栏是:

0,0,1,1,1,2

我想将所有这些值加在一起,并在输出中有一个总列

谢谢

4

3 回答 3

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

小提琴

于 2013-04-08T11:24:54.773 回答
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;
于 2013-04-08T10:58:29.017 回答
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

分享和享受。

于 2013-04-08T11:35:23.747 回答