A 表(销售产品明细表)ID   合同号   产品编号    单价     数量
1    111      1           2.0      50
2    111      2           5.0      150
3    111      3           3.0      500
4    112      1           2.0      50
5    112      2           3.0      50
6    113      1           2.0      50
B 表(销售回款表)  ID   合同号 回款金额   回款日期
1    111     1500      2012-2-24
2    112     250       2012-3-4  
3    111     100       2012-4-2
C表(实际发货产品表)ID   合同号   产品编号    单价     数量
1    111      1           2.0      50
2    111      2           5.0      100
4    112      1           2.0      50
5    112      2           3.0      50
现在要统计出已经发货的(在C表中存在的)但未全部回款的(A表中销售总价不等于B表中回款总金额)合同号

解决方案 »

  1.   

    select * from c left join b on b.hetonghao=c.hetonghao 
    inner join a on a.hetonghao=b.hetonghao
    where (a.danjia*b.shuliang) <>b.huikuanjine
      

  2.   


    select c.hetongNo
    from c join (select hetongNo,sum(price*num) amount from a group by hetongNo) b on c.hetongNo = b.hetongNo
           join (select hetongNo,sum(reAmount) amount from b group by hetongNo) d on c.hetongNo = d.hetongNo
    where b.amount <> c.amount
    group by c.hetongNo
      

  3.   


    select distinct c.合同号 from c left join a on c.合同号=a.合同号 left join b on c.合同号=b.合同号
    group by c.合同号
    having sum(a.单价*数量)<>sum(b.回款金额) 
      

  4.   

    select distinct c.合同号
    from a,b,c
    where a.合同号=b.合同号
    and b.合同号=c. 合同号
    and b.回款金额 NOT (a.单价 * a.数量)
      

  5.   

    select distinct a.Contractno from A
    where a.Contractno not in (
    select d.Contractno(
            (select b.Contractno,sum(b.price*b.num) as totalb from B b group by b.Contractno) d 
     left join (select c.Contractno,sum(c.backprice) as totalc from C c group by 
    c.Contractno) e  on e.Contractno = d.Contractno
    where d.totalb=e.totalc
    )