我希望有人能帮助我。在Oracle中用逗号分隔的列中的计数或总计值SQL
我期待在excel中找到来自同一个字段的多个值的总数是否有可能?
我的样品列是:
0,0,1,1,1,2
我想所有这些值在输出加在一起,总共有列
感谢
我希望有人能帮助我。在Oracle中用逗号分隔的列中的计数或总计值SQL
我期待在excel中找到来自同一个字段的多个值的总数是否有可能?
我的样品列是:
0,0,1,1,1,2
我想所有这些值在输出加在一起,总共有列
感谢
请尝试:
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;
嗨,谢谢你的反应,它不完全是我需要的,我期待从oracle数据库执行此操作并将其显示为字段。数字可以改变,所以我可以有一行0,0,1,1,1,2我想显示数字5,但下一行可能是1,1,2,6,10,所以我需要20来显示在总列 – 2013-04-08 11:01:40
它是否适用于您的情况? – TechDo 2013-04-08 11:04:36
大厦@ 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
分享和享受。
哪一个是您的数据库? – TechDo 2013-04-08 10:54:57
你想告诉你有2'0',3'''和'1''吗?如果是这样,我会用逗号分隔单元格并转置数据。然后,在记录上运行一个数据透视表。你问的这个问题很好。如果你愿意,我可以扩展更多关于如何做到这一点。 – Jerry 2013-04-08 10:57:56
你好,谢谢你的反应,它不完全是我需要的,我希望从oracle数据库执行此操作并将其显示为字段。数字可以改变,所以我可以有一行0,0,1,1,1,2我想显示数字5,但下一行可能是1,1,2,6,10,所以我需要20来显示在总列 – 2013-04-08 11:08:36