我现有以下两个表(表A,表B)
[表A]
编号  名称    付款日期    付款单号  付款金额   进货编号
101   C-1      2009-09-24  10001       300       100003
102   C-1       2009-9-25  10001       400       100003
103   C-1        2009-9-25 10001      200       100003
104   C-2        2009-9-25 10002       100      100004[表B]
进货编号     数量   单价   金额  备注
100003        10     20    200
100003        20     20    400
100003        5      20    100
100003        5      40    200
100004        5       10    50
100004        2       5     10
100004        4       10    40
 
现在我想要得到的是
[表C]
编号  名称    付款日期    付款单号  付款金额   进货编号  数量   单价   金额   备注
101   C-1      2009-09-24  10001       300       100003   10     20     200
102   C-1       2009-9-25  10001       400       100003   20     20     400 
103   C-1        2009-9-25 10001       200        100003  5      20      100
(null) (null)     (null)   (null)      (null)      10003   5     400     200
小计  (null)      (null)   (null)      900                 40      0      900
104    C-2        2009-9-25 10002       100         100004  5      10    50
(null)  (null)    (null)   (null)       (null)      100004  2       5    10
(null)  (null)    (null)   (null)       (null)      100004  4       10    40
小计    (null)     (null)   (null)      (null)      0       11       0    100SELECT 表A.编号, 表A.名称,表A.付款日期,表A.付款单号,表A.付款金额,表A.进货编号
,表B.数量,表B.单价,表B.金额,表B.备注
FROM 表A RIGHT OUTER JOIN 
      表B ON 表A.进货编号=表B.进货编号
我现在用right outer join不能达到我的要求,请问各位大侠帮忙,谢谢。    

解决方案 »

  1.   

    SELECT 表A.编号, 表A.名称,表A.付款日期,表A.付款单号,表A.付款金额,表A.进货编号 
    ,表B.数量,表B.单价,表B.金额,表B.备注 
    FROM 表A RIGHT OUTER JOIN 
          表B ON 表A.进货编号=表B.进货编号
    union
    SELECT 小计, 表A.名称,null,null,sum(isnull(表A.付款金额,0)),null,sum(isnull(表B.数量,0)),0,sum(isnull(表B.金额,0)),null 
    FROM 表A RIGHT OUTER JOIN 
          表B ON 表A.进货编号=表B.进货编号
    group by 计, 表A.名称
      

  2.   

    大侠那要怎么改,我现在想,如果我的表A的进货编号相同只显示一个,那就使用RIGHT JOIN就可以。
      

  3.   

    只能提供两个思路:(关注SQL高手解决.)
    1.想办法插入中间的"小计"行
    2.按"进货编号"拆分表B,形成子表,然后right join……
      

  4.   

    小计那里我有办法解决,现在问题就在于。连接表B的问题。也就是表B就等同于表A的子表。
      

  5.   

    lz的问题不是sql的问题,
    小计 用sum、 group by就可以了
    排序 用order by问题关键是表建的有问题,如果表A是按 进货行号 付款,应该在两表增加 进货行号[表A] 
    编号  名称    付款日期    付款单号  付款金额  进货编号        进货行号
    101  C-1      2009-09-24  10001      300      100003    010
    102  C-1      2009-9-25  10001      400      100003     020
    103  C-1        2009-9-25 10001      200      100003    030
    104  C-2        2009-9-25 10002      100      100004    010[表B] 
    进货编号    数量  单价  金额  备注    进货行号
    100003        10    20    200      010
    100003        20    20    400      020
    100003        5      20    100     030
    100003        5      40    200     040
    100004        5      10    50      010
    100004        2      5    10       020
    100004        4      10    40      030