有两个表
表A:
材料 价格
A 5
B 10
C 15
D 20
......
表B:成品的制造需要使用到多种材料
成品 材料1 数量1 材料2 数量2
AA A 2 B 3
BB A 5 C 4
......
要得到的结果表:
成品 成品价格=(材料1价格×数量1+材料2价格×数量2)
AA 5×2+10×3
BB 5×5+15×4
......
这个表的SQL语句怎么写?谢谢!
...全文
1328打赏收藏
求助!求一个表的SQL
有两个表 表A: 材料 价格 A 5 B 10 C 15 D 20 ...... 表B:成品的制造需要使用到多种材料 成品 材料1 数量1 材料2 数量2 AA A 2 B 3 BB A 5 C 4 ...... 要得到的结果表: 成品 成品价格=(材料1价格×数量1+材料2价格×数量2) AA 5×2+10×3 BB 5×5+15×4 ...... 这个表的SQL语句怎么写?谢谢!
--創建測試環境
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', 20
Create 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
*/
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',20
create 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
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 成品