两个表 表A:部门类型 物料id 单价 型号 数量 价格
表B:物料id 部门id要求:
(1)、通过表B的关系将A表的“部门类型”为0的物料id字段转换成“部门id”,并将这些记录的部门类型设为1;
(2)、在(1)查询后的结果中会有一些记录的“部门id” and “型号”相等的记录,然后的工作是合并这些有着相同性质的记录:汇总有这些相同性质的数量,更新“数量”字段为汇总的数量,并根据汇总的数量*“单价”更新“价格”列,最后将这些汇总的记录再插到A表中。
整个过程后表A中原来的记录不变,只是又新插入通过(1)、(2)查询的结果。
整个过程表A的结构没变,说明:当部门类型 =0, “物料id”存储的就是“物料id”;当部门类型=1, “物料id”存储的就是“部门id”。
表B:物料id 部门id要求:
(1)、通过表B的关系将A表的“部门类型”为0的物料id字段转换成“部门id”,并将这些记录的部门类型设为1;
(2)、在(1)查询后的结果中会有一些记录的“部门id” and “型号”相等的记录,然后的工作是合并这些有着相同性质的记录:汇总有这些相同性质的数量,更新“数量”字段为汇总的数量,并根据汇总的数量*“单价”更新“价格”列,最后将这些汇总的记录再插到A表中。
整个过程后表A中原来的记录不变,只是又新插入通过(1)、(2)查询的结果。
整个过程表A的结构没变,说明:当部门类型 =0, “物料id”存储的就是“物料id”;当部门类型=1, “物料id”存储的就是“部门id”。
select 0,b.部门id,单价 ,型号,数量,价格 From a,b
where a.物料id=b.物料id and a.部门类型=0;Insert Into A (部门类型 ,物料id ,单价 ,型号,数量,价格)
Select 1,物料id,单价,型号,sum(数量),sum(数量*单价)
from a where 部门类型=1 group by 物料id ,单价 ,型号 having count(物料id)>1
您的方法是用了两次insert 这样的话会出现很多垃圾记录
我是想这样写:
insert into A( BMLX ,--部门类型
BM ,--物料id
DJ , --单价
LXH ,--型号
SL ,--数量
ZJ) --价格
select 1,
(select b.bmid from b where b.wlid = A.bm) as hzsl,
DJ,
LXH,
sum(SL),
sum(SL*DJ)
from A
where BMLX = 0
group by (select b.bmid from b where b.wlid = A.bm) , LXH
问题是这样写语法上是错误的,希望您能在这个的基础上给改改;
--insert data...
create table A
(
BMLX NUMBER,
BM NUMBER,
DJ NUMBER,
LXH VARCHAR2(10),
SL NUMBER,
ZJ NUMBER
);
create table B
(
WLID NUMBER,
BMID NUMBER
);--sql test..
insert into A( BMLX ,--部门类型
BM ,--物料id
DJ , --单价
LXH ,--型号
SL ,--数量
ZJ) --价格
select 1,b.bmid,DJ,LXH,sum(SL),sum(SL*DJ)
from A ,B
where A.BMLX = 0
and a.bm=b.wlid
group by b.bmid,DJ,LXH
insert into A( BMLX ,--部门类型
BM ,--物料id
DJ , --单价
LXH ,--型号
SL ,--数量
ZJ) --价格
select 1,BMID,MAX(DJ),LXH,SUM(SL),SUM(SL*DJ) from
(select b.BMID,a.DJ,a.LXH,a.SL,a.ZJ from a left join b on a.BM=b.WLID and a.BMLX=0)
group by BMID,LXH你的查询语句里第二个字段和group by字句里的语法不对
group by 后面的where条件移到前面的where 后面去