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

解决方案 »

  1.   

    SELECT
    A.合同号,
    A.名称,
    A.规格,
    A.颜色,
    附属物总价 = SUM(B.数量*B.单价)
    FROM A
    INNER JOIN B
    ON A.产品编号 = B.BID
    GROUP BY 
    A.合同号,
    A.名称,
    A.规格,
    A.颜色
      

  2.   


    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
    */
      

  3.   

    select
     a.合同号,a.名称,a.规格,a.颜色,sum(b.数量*b.单价) as 附属物总价 
    from
     a,b
    where
     b.BID=a.产品编号
    group by
     a.合同号,a.名称,a.规格,a.颜色