首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

~求一Sql语句

2012-01-28 
高手救命~~~~~~~~~~求一Sql语句进库表型号数量价格编号X1100.0000bbbX1100.0000bbbX5200.0000cccM5300.000

高手救命~~~~~~~~~~求一Sql语句
进库表

型号           数量             价格             编号

X1100.0000     bbb
X1100.0000     bbb
X5200.0000     ccc
M5300.0000     aaa

库存表

型号           数量             价格             编号

X2NULL   bbb
X5NULL   ccc
M5NULL   aaa


现在我想循环库存表更新价格~~~根据进货表的价格~~   得到
型号           数量             价格             编号

X2100   bbb
X5200   ccc
M5300   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.型号

热点排行