表A:
NO  名称 数量
1    A  10
2    B  20
3    A  30
4    B      40
表B:
名称 数量
A  100
B  200
A  300
B  400表C:
NO. 名称 数量A 数量B 数量C
1 A 10   400   -390
2 B 20   600   -580
3 A 30   400   -360
4 B 40   600   -540数B 为表B 同一名称的数量合计,数量C 为数量A-数量C 的分别累计

解决方案 »

  1.   

    select a.*,(select sum(数量) from b where 名称=TA.名称) as 数量B,
    (select sum(数量) from A where 名称=TA.名称 AND NO<=TA.NO)-(select sum(数量) from b where 名称=TA.名称) as 数量C
    from a TA结果是对的,效率不知道怎么样。
      

  2.   

    select x.No ,x.名称 ,x.数量 数量A,y.数量B ,y.数量B-x.数量 数量C from 表A x(select 名称,sum(数量)数量B group by 名称) y where x.名称 =y.名称
      

  3.   


      select x.No ,x.名称 ,x.数量 数量A,y.数量B ,y.数量B-x.数量 数量C from 表A x(select 名称,sum(数量)数量B from 表B group by 名称) y where x.名称 =y.名称 
     
      

  4.   

    数量C 为数量A-数量C 的分别累计是什么意思,不懂!
      

  5.   

    select TA.No,TA.名称,TA.数量 as 数量A,(select sum(数量) from b where 名称=TA.名称) as 数量B,
    (select sum(数量) from A where 名称=TA.名称 AND NO<=TA.NO)-(select sum(数量) from b where 名称=TA.名称) as 数量C
    from a TA
      

  6.   

    SELECT NO, 名称, 数量 AS 数量A, (select sum(数量) from B where 名称=TA.名称) AS 数量B, ((select sum(数量) from A where 名称=TA.名称 AND NO<=TA.NO)-(select sum(数量) from B where 名称=TA.名称)) AS 数量C
    FROM A AS TA;