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 进库表, 库存表

解决方案 »

  1.   


    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)
      

  2.   

    update 库存表 
    set 价格 = b.价格
    from 库存表 a,(select 编号,型号, 价格 from 进库表 group by 编号,型号,价格) b
    where a.编号 = b.编号 and a.型号 = b.型号