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 成品
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
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 行) */
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.材料
--創建測試環境 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 */
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 成品
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
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 行)
*/
from tableB as a
left join tabelA as b on a.材料1 = b.材料
left join tableA as c on a.材料2 = c.材料
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
*/