是这样的。。现在有一个表。分别有 A1,A2,A3,A4,A5字段。。 要求 将这个表的字段进行 sum(A1)/ distinct count(A2)
sum(A1)/sum(A3) where A5=“存储过程传进来的ID” 如何写一个存储过程 将这个表的字段
进行计算后,在查出结果集我的思路是 是否将2个算法 算出来保存到变量里, 还是 直接SELECT查呢?? 具体语法怎么些,,请各位帮下忙 谢谢
sum(A1)/sum(A3) where A5=“存储过程传进来的ID” 如何写一个存储过程 将这个表的字段
进行计算后,在查出结果集我的思路是 是否将2个算法 算出来保存到变量里, 还是 直接SELECT查呢?? 具体语法怎么些,,请各位帮下忙 谢谢
保存为变量,再进行除法,这样看起来比较清晰
SELECT SUM(A1) / COUNT(DISTINCT A2) , SUM(A1) / SUM(A3) FROM table1 WHERE A5 = '1111'
LZ要注意一下是否sum和count的分组对象(group by)是不是都一样的
如果不一样 最好是要做虚表 然后在select的地方进行计算
(select SUM(A1) / SUM(A3) FROM table1 WHERE A5 = '1111')
from T
是这个意思?
分开写啊,你都是存储过程了,这样写起来便于调试
例如
存储过程里申明临时变量:
CAREATE PROCEDURE........
AS
V_CNT NUMBER;--临时变量
BEGIN
SELECT count(distinct A2) INTO V_CNT
from ... ;SELECT SUM(A1) /V_CNT , SUM(A1) / SUM(A3) FROM table1 WHERE A5 = '1111';end;
pro_find(A_id NUMBER)
AS
v_x1 VARCHAR2(20),v_x2 VARCHAR2(20);
BEGIN
SELECT sum(A1)/ count(distinct(A2)),sum(A1)/sum(A3) INTO v_x1,v_x2 from tablename;
DBMS_OUTPUT.PUT_LINE('结果是: '|| v_x1|| ' '||v_x2);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE ('该id不存在');
END pro_find;
/楼主结贴了,呵呵
100分 存储过程,大家上啊!!
什么问题再和我讨论哦··
select SUM(A1) / COUNT(DISTINCT A2)
BULK COLLECT INTO
N_SUM_COUNT
from ...--放别的表
FOR W_CNT IN 1..tabMC040020.COUNT LOOP
insert into T1
(T10010)
...
value
(N_SUM_COUNT)
...
End Loop;
SQL语句也可有参数化条件啊,怎么不可以?