select 成品,成品价格=A.价格*数量1+C.价格*数量2
from 表B B
left join 表A A on A.材料=B.材料1
left join 表A C on C.材料=B.材料2

解决方案 »

  1.   


    select sum(成品价格) from (
    select 成品,成品价格=a.价格*b.数量1 from 表A a inner join 表B b on a.材料 =b.材料1
    union all 
    select 成品,成品价格=a.价格*b.数量2 from 表A a inner join 表B b on a.材料 =b.材料2) t 
    group by 成品
      

  2.   

    trySelect
    B.成品,
    A.价格 * B.数量1 + C.价格 * B.数量2 As 成品价格
    From
    B
    Inner Join
    A
    On A.材料 = B.材料1
    Inner Join
    A C
    On C.材料 = B.材料2
      

  3.   

    drop table 表A,表B
    go
    create table 表A(材料 varchar(10),价格 int)
    insert into 表A
    select 'A',5
    union all select 'B',10
    union all select 'C',15
    union all select 'D',20create table 表B(成品 varchar(10),材料1 varchar(10),数量1 int,材料2 varchar(10),数量2 int)
    insert into 表B
    select 'AA','A',2,'B',3
    union all select 'BB','A',5,'C',4  select 成品,成品价格=A.价格*数量1+C.价格*数量2
    from 表B B
    left join 表A A on A.材料=B.材料1
    left join 表A C on C.材料=B.材料2
    /*
    成品         成品价格        
    ---------- ----------- 
    AA         40
    BB         85(所影响的行数为 2 行)
    */
      

  4.   

    select a.成品,成品价格 = a.数量1 * b.价格 + a.数量2 * c.价格
    from tableB as a 
    left join tabelA as b on a.材料1 = b.材料
    left join tableA as c on a.材料2 = c.材料
      

  5.   

    --創建測試環境
    Create Table A
    (材料 Varchar(10),
     价格 Int)
    Insert A Select      'A',       5
    Union All Select       'B',       10
    Union All Select       'C',       15
    Union All Select       'D',       20Create Table B
    (成品 Varchar(10),
     材料1 Varchar(10),
     数量1 Int,
     材料2 Varchar(10),
     数量2 Int)
    Insert B Select      'AA',       'A',      2,      'B',     3
    Union All Select     'BB',       'A',      5,      'C',     4 
    GO
    --測試
    Select
    B.成品,
    A.价格 * B.数量1 + C.价格 * B.数量2 As 成品价格
    From
    B
    Inner Join
    A
    On A.材料 = B.材料1
    Inner Join
    A C
    On C.材料 = B.材料2
    GO
    --刪除測試環境
    Drop Table A, B
    --結果
    /*
    成品 成品价格
    AA 40
    BB 85
    */