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 材料预算表,库存表

解决方案 »

  1.   

    update 材料预算表
    set 材料单价 = hou.ac
    from 材料预算表
    inner join
    (select 材料名称,材料厚度,avg(材料单价) ac 
    from 库存表
           group by 材料厚度,材料名称) as hou
    on 材料预算表.材料名称 = hou.材料名称
    and 材料预算表.材料厚度 = hou.材料厚度
      

  2.   

    select 材料类别,材料名称,材料厚度,avg(材料单价)
    from 库存表
    group by  材料类别,材料名称,材料厚度
      

  3.   

    update a set 材料单价=b.材料单价 from 材料预算表 a, 
    (select 材料类别,材料名称,材料厚度,材料单价=avg(材料单价)
    from 库存表
    group by  材料类别,材料名称,材料厚度) b 
    where a.材料类别=b.材料类别 and a.材料名称=b.材料名称 and a.材料厚度= b.材料厚度
      

  4.   

    SELECT 材料类别,材料名称,材料厚度,avg(材料单价)
    FROM 库存表
    GROUP BY 材料类别,材料名称,材料厚度
      

  5.   

    update 材料预算表 set 材料单价 = up.av
    from 材料预算表
    inner join (select 材料名称,材料厚度,avg(材料单价) av 
    from 库存表
           group by 材料厚度,材料名称) as up on 材料预算表.材料名称 = up.材料名称
    and 材料预算表.材料厚度 = up.材料厚度------------------------
    (所影响的行数为 3 行)
    材料类别       材料名称       材料厚度        材料单价        
    ---------- ---------- ----------- ----------- 
    板材         钢板         2           3250
    板材         钢板         3           4250
    板材         钢板         4           5250(所影响的行数为 3 行)
      

  6.   

    update 材料预算表
    set 材料单价 = hou.ac
    from 材料预算表
    inner join
    (select 材料名称,材料厚度,avg(材料单价) ac 
    from 库存表
           group by 材料厚度,材料名称) as hou
    on 材料预算表.材料名称 = hou.材料名称
    and 材料预算表.材料厚度 = hou.材料厚度