比如:
有张表为所有代理商每日发展的不同品牌的数量(2008年间) 代理商ID 品牌 日期 日发展量
1111 a 20080101 1
2222 a 20080101 2
1111 b 20080102 3
1111 a 20080102 2
2222 a 20080201 1
2222 a 20080202 1
...
...
如何统计出相对于某天的不同品牌的本月总发展量,然后最后要增加到上面的新表中。
比如统计成这样的: 代理商ID 品牌 日期 日发展量 本月发展量
1111 a 20080101 1 1
2222 a 20080101 2 2
1111 b 20080102 3 3
1111 a 20080102 2 3
....
....
2222 a 20080201 1 1
2222 a 20080202 1 2 不知道我表述清楚没.. 谢谢回答!
有张表为所有代理商每日发展的不同品牌的数量(2008年间) 代理商ID 品牌 日期 日发展量
1111 a 20080101 1
2222 a 20080101 2
1111 b 20080102 3
1111 a 20080102 2
2222 a 20080201 1
2222 a 20080202 1
...
...
如何统计出相对于某天的不同品牌的本月总发展量,然后最后要增加到上面的新表中。
比如统计成这样的: 代理商ID 品牌 日期 日发展量 本月发展量
1111 a 20080101 1 1
2222 a 20080101 2 2
1111 b 20080102 3 3
1111 a 20080102 2 3
....
....
2222 a 20080201 1 1
2222 a 20080202 1 2 不知道我表述清楚没.. 谢谢回答!
order by 代理商ID
改成
sum(日发展量)over(partition by 代理商ID,品牌,substr(日期,1,6) order by 代理商ID)
alter table table1 add 本月发展量 number;
然后更新
update table1 a set 本月发展量=(select s from(
select 代理商ID,品牌,日期,
sum(日发展量)over(partition by 代理商ID,品牌,substr(日期,1,6))s
from table1)
where 代理商ID=a.代理商ID and 品牌=a.品牌 and 日期=a.日期)
CREATE TABLE test1(dlsId NUMBER(5,0), pp CHAR(4), rq DATE, rfzl NUMBER(9,0));CREATE TABLE test2(dlsId NUMBER(5,0), pp CHAR(4), rq DATE, rfzl NUMBER(9,0), byfzl NUMBER(9,0));INSERT INTO test1(dlsId, pp, rq, rfzl)
VALUES(1111,'a',TO_DATE('20080101','yyyymmdd'),1);
INSERT INTO test1(dlsId, pp, rq, rfzl)
VALUES(2222,'a',TO_DATE('20080101','yyyymmdd'),2);
INSERT INTO test1(dlsId, pp, rq, rfzl)
VALUES(1111,'b',TO_DATE('20080102','yyyymmdd'),3);
INSERT INTO test1(dlsId, pp, rq, rfzl)
VALUES(1111,'a',TO_DATE('20080102','yyyymmdd'),2);
INSERT INTO test1(dlsId, pp, rq, rfzl)
VALUES(2222,'a',TO_DATE('20080201','yyyymmdd'),1);
INSERT INTO test1(dlsId, pp, rq, rfzl)
VALUES(2222,'a',TO_DATE('20080202','yyyymmdd'),1);INSERT INTO test2(dlsId, pp, rq, rfzl, byfzl)
SELECT t1.dlsId, t1.pp, t1.rq, t1. rfzl, t2.byfzl
FROM test1 t1 left join
(SELECT dlsId, pp, TO_CHAR(rq,'yyyymm') rq, NVL(SUM(rfzl),0) AS byfzl
FROM test1 GROUP BY dlsId, pp, TO_CHAR(rq,'yyyymm') ) t2
ON t1.dlsId=t2.dlsId AND t1.pp=t2.pp AND TO_CHAR(t1.rq,'yyyymm')=t2.rq;SELECT t2.dlsId "代理商ID", t2.pp "品牌", t2.rq "日期", t2.rfzl "日发展量", t2.byfzl "本月发展量"
FROM test2 t2;
select 代理商ID,品牌,日期,
sum(日发展量)over(partition by 代理商ID,品牌,substr(日期,1,6)
order by 日期 rows between unbounded preceding and current row)s
from table1)
where 代理商ID=a.代理商ID and 品牌=a.品牌 and 日期=a.日期)