进库表
型号 数量 价格 编号
X 1 100.0000 bbb
X 1 100.0000 bbb
X 5 200.0000 ccc
M 5 300.0000 aaa
库存表
型号 数量 价格 编号
X 2 NULL bbb
X 5 NULL ccc
M 5 NULL aaa
现在我想循环库存表更新价格~~~根据进货表的价格~~ 得到
型号 数量 价格 编号
X 2 100 bbb
X 5 200 ccc
M 5 300 aaa
------解决方案--------------------
create table 进库表(型号 varchar(10),数量 int,价格 int,编号 varchar(10))
insert into 进库表 values( 'X ',1,100, 'bbb ')
insert into 进库表 values( 'X ',1,100, 'bbb ')
insert into 进库表 values( 'X ',5,200, 'ccc ')
insert into 进库表 values( 'M ',5,300, 'aaa ')
create table 库存表(型号 varchar(10),数量 int,价格 int,编号 varchar(10))
insert into 库存表 values( 'X ',2,NULL, 'bbb ')
insert into 库存表 values( 'X ',5,NULL, 'ccc ')
insert into 库存表 values( 'M ',5,NULL, 'aaa ')
go
--查询
select 型号 , sum(数量) 数量 , sum(价格) 价格 , 编号 from 进库表 group by 编号,型号
/*
型号 数量 价格 编号
---------- ----------- ----------- ----------
M 5 300 aaa
X 2 200 bbb
X 5 200 ccc
*/
--更改
update 库存表
set 价格 = b.价格
from 库存表 a,(select 编号,型号,sum(价格) 价格 from 进库表 group by 编号,型号) b
where a.编号 = b.编号 and a.型号 = b.型号
select * from 库存表 order by 编号,型号
/*
型号 数量 价格 编号
---------- ----------- ----------- ----------
M 5 300 aaa
X 2 200 bbb
X 5 200 ccc
*/
drop table 进库表, 库存表
------解决方案--------------------
select * from 库存表
update 库存表
set 价格=b.价格
from 库存表 a left join (select distinct 价格,编号 from 进库表)b
on a.编号=b.编号
型号 数量 价格 编号
---------- ----------- ----------- ----------
X 2 100 bbb
X 5 200 ccc
M 5 300 aaa
(3 row(s) affected)
------解决方案--------------------
update 库存表
set 价格 = b.价格
from 库存表 a,(select 编号,型号, 价格 from 进库表 group by 编号,型号,价格) b
where a.编号 = b.编号 and a.型号 = b.型号