我现在有这样一张表A,表结构如下:
DWDM,WPDM, SL
001 P13 10
001 TNT 5
002 P13 20
003 TYP 100
002 P51 12
....
现在我要通过按单位(DWDM),物品(WPDM)分组对数量(SL)进行求和,
要产生如下结构的数据集:
ID DWDM WPDM SL
1 001 P13 10
1 001 TNT 5
2 002 P13 20
2 002 P51 12
3 003 TYP 100
即DWDM相同,则ID相同,关键点是这个,而且数据量巨大,要考虑效率问题!谢谢高手们赐教!
DWDM,WPDM, SL
001 P13 10
001 TNT 5
002 P13 20
003 TYP 100
002 P51 12
....
现在我要通过按单位(DWDM),物品(WPDM)分组对数量(SL)进行求和,
要产生如下结构的数据集:
ID DWDM WPDM SL
1 001 P13 10
1 001 TNT 5
2 002 P13 20
2 002 P51 12
3 003 TYP 100
即DWDM相同,则ID相同,关键点是这个,而且数据量巨大,要考虑效率问题!谢谢高手们赐教!
解决方案 »
- oracle update select group by怎么写_急急_在线等
- 求助:用存储过程实现数据查询、结果集处理、数据插入
- Oracle 10G数据库恢复总出错
- oracle10g如何热备,有的说用dataguad?,有具体说明如何做的吗???
- 一个包另面的私有变量如何定义呢?
- 能 在数据库中如何随机取数据吗??简单一点的
- 如何恢复dmp 文件】
- oracle中的convert函数是否能将we8iso8859p1字符转换为zhs16gbk字符
- PL/SQL中调用存储过程。
- oracle817的备份问题,高分请教!
- Oracle Performance: Hotsos 有人用吗?分享分享
- oracle数据库导出
select to_number(dwdm) id,DWDM,WPDM,SL from tableA order by id;
select to_number(dwdm) id,DWDM,WPDM,sum(SL) from tableA order by id group by DWDM,WPDM;
from (select dwdm a, wpdm b, sum(sl) c from tableA group by dwdm, wpdm) t
order by id;
请问还有别的方法吗?
select id,DWDM,WPDM,sum(SL) from
(select DWDM,WPDM,SL,row_number() over(partion by DWDM order by DWDM) id from tableA) group by id,DWDM,WPDM
create sequence t_seq;
create trigger t_trigger before insert on t for each row
begin
select t_seq.nextval into :new.pk from dual;
end;
2.每次insert tableA表时,从table_id中取最小的一个号码作为DWDM: select min(id0) from table_id;
3.修改tableA表中的id,使之与DWDM相同。
DWDM WPDM SL
---------- ---------- ----------
001 p13 10
001 tnt 5
002 p13 20
003 typ 100
002 p51 12
SQL>
SQL> select rn, a.dwdm, wpdm, sl
2 from a, (select dwdm, rownum rn from (select distinct dwdm from a order by dwdm)) b
3 where a.dwdm = b.dwdm
4 order by rn;
RN DWDM WPDM SL
---------- ---------- ---------- ----------
1 001 tnt 5
1 001 p13 10
2 002 p51 12
2 002 p13 20
3 003 typ 100
--------------- --------------- ----------
001 P13 10
001 TNT 5
002 P13 20
003 TYP 100
002 P51 12scott@ORA1> SELECT dense_rank() over(order by dwdm) num
2 ,dwdm
3 ,wpdm
4 ,sum_sl
5 FROM (
6 SELECT DWDM, WPDM, SUM(SL) sum_sl
7 FROM A
8 GROUP BY dwdm, wpdm
9 ) x; NUM DWDM WPDM SUM_SL
---------- --------------- --------------- ----------
1 001 P13 10
1 001 TNT 5
2 002 P13 20
2 002 P51 12
3 003 TYP 100