A 表
ID 合同号 产品编号 名称 规格 颜色
1 NO11421 111 铅笔 0.5mm 白色
2 NO11421 222 铅笔 0.5mm 白色
3 NO11421 333 橡皮 1cm 白色
B 表
ID 合同号 BID 附属物名称 数量 单价
1 NO11421 111 铅笔帽 20 1.2
2 NO11421 111 铅笔芯 20 0.8
3 NO11421 222 铅笔帽 30 1.2
4 NO11421 222 铅笔芯 30 0.8
5 NO11421 333 橡皮套 10 0.5 B表中的BID对应A表的产品编号统计处A表中相同名称,相同规格,相同颜色的产品的附属物的总价格结果如下:合同号 名称 规格 颜色 附属物总价
NO11421 铅笔 0.5mm 白色 100
NO11421 橡皮 1cm 白色 5
A.合同号,
A.名称,
A.规格,
A.颜色,
附属物总价 = SUM(B.数量*B.单价)
FROM A
INNER JOIN B
ON A.产品编号 = B.BID
GROUP BY
A.合同号,
A.名称,
A.规格,
A.颜色
declare @A表 table (ID int,合同号 varchar(7),产品编号 int,名称 varchar(4),规格 varchar(5),颜色 varchar(4))
insert into @A表
select 1,'NO11421',111,'铅笔','0.5mm','白色' union all
select 2,'NO11421',222,'铅笔','0.5mm','白色' union all
select 3,'NO11421',333,'橡皮','1cm','白色'declare @B表 table (ID int,合同号 varchar(7),BID int,附属物名称 varchar(6),数量 int,单价 numeric(2,1))
insert into @B表
select 1,'NO11421',111,'铅笔帽',20,1.2 union all
select 2,'NO11421',111,'铅笔芯',20,0.8 union all
select 3,'NO11421',222,'铅笔帽',30,1.2 union all
select 4,'NO11421',222,'铅笔芯',30,0.8 union all
select 5,'NO11421',333,'橡皮套',10,0.5select a.合同号,a.名称,a.规格,a.颜色,sum(b.数量*b.单价) as 附属物总价 from @B表 b
left join @A表 a on b.BID=a.产品编号
group by a.合同号,a.名称,a.规格,a.颜色
/*
合同号 名称 规格 颜色 附属物总价
------- ---- ----- ---- ---------------------------------------
NO11421 铅笔 0.5mm 白色 100.0
NO11421 橡皮 1cm 白色 5.0
*/
a.合同号,a.名称,a.规格,a.颜色,sum(b.数量*b.单价) as 附属物总价
from
a,b
where
b.BID=a.产品编号
group by
a.合同号,a.名称,a.规格,a.颜色