create table 材料预算表
(
材料类别 varchar(10),
材料名称 varchar(10),
材料厚度 int,
材料单价 int
)
insert into 材料预算表 select '板材','钢板',2,0
insert into 材料预算表 select '板材','钢板',3,0
insert into 材料预算表 select '板材','钢板',4,0
create table 库存表
(
材料类别 varchar(10),
材料名称 varchar(10),
材料厚度 int,
材料单价 int
)
insert into 库存表 select '板材','钢板',2,3000
insert into 库存表 select '板材','钢板',2,3500
insert into 库存表 select '板材','钢板',3,4000
insert into 库存表 select '板材','钢板',3,4500
insert into 库存表 select '板材','钢板',4,5000
insert into 库存表 select '板材','钢板',4,5500/*
要求根据库存表中钢板的厚度进行区分,把不同厚度的钢板的平均价格计算出来
然后在材料预算表中更新单价为库存表中的平均价格
材料类别 材料名称 材料厚度 材料单价
板材 钢板 2 3250
板材 钢板 3 4250
板材 钢板 4 5250
*/drop table 材料预算表,库存表
set 材料单价 = hou.ac
from 材料预算表
inner join
(select 材料名称,材料厚度,avg(材料单价) ac
from 库存表
group by 材料厚度,材料名称) as hou
on 材料预算表.材料名称 = hou.材料名称
and 材料预算表.材料厚度 = hou.材料厚度
from 库存表
group by 材料类别,材料名称,材料厚度
(select 材料类别,材料名称,材料厚度,材料单价=avg(材料单价)
from 库存表
group by 材料类别,材料名称,材料厚度) b
where a.材料类别=b.材料类别 and a.材料名称=b.材料名称 and a.材料厚度= b.材料厚度
FROM 库存表
GROUP BY 材料类别,材料名称,材料厚度
from 材料预算表
inner join (select 材料名称,材料厚度,avg(材料单价) av
from 库存表
group by 材料厚度,材料名称) as up on 材料预算表.材料名称 = up.材料名称
and 材料预算表.材料厚度 = up.材料厚度------------------------
(所影响的行数为 3 行)
材料类别 材料名称 材料厚度 材料单价
---------- ---------- ----------- -----------
板材 钢板 2 3250
板材 钢板 3 4250
板材 钢板 4 5250(所影响的行数为 3 行)
set 材料单价 = hou.ac
from 材料预算表
inner join
(select 材料名称,材料厚度,avg(材料单价) ac
from 库存表
group by 材料厚度,材料名称) as hou
on 材料预算表.材料名称 = hou.材料名称
and 材料预算表.材料厚度 = hou.材料厚度