现有出租表 a  
合同号, 出租单号,品名,出租数量.
1         1      小模板  10 
1         2      小模板  5
--------------------------
回收表 b 
合同号, 回收单号,品名,回收数量.
1         1      小模板  10 
1         2      小模板  6
---------------------------
欲统计这个合同 每种物料分回收单号显示多回收部分,不多的回单号不显示
如下:
合同号, 回收单号,品名,回收数量.多回数量  
1       2        小模板 6       1
请教高手处理思路.多谢

解决方案 »

  1.   

    select b.合同号,b.回收单号,b.品名,b.回收数量, b.回收数量-b.出租数量 as '多回数量'
    from a,b
    where a.合同号=b.合同号
      and a.回收数量>b.出租数量
      

  2.   

    select b.合同号,b.回收单号,b.品名,b.回收数量, b.回收数量-b.出租数量 as '多回数量'
    from a,b
    where a.合同号=b.合同号
      and a.出租单号=b.回收单号
      and b.回收数量>a.出租数量
      

  3.   

    select b.*,a.* from b,a where 
    (select sum(回收数量) from b o where o.ID <= b.ID) > a.出租数量
    and a.合同号= b.合同号
    and a.编号= b.编号 有种这样的思路,不知道你看不看得懂?
      

  4.   

    --建立测试环境
    create table 出租
    (合同号 int , 出租单号 int ,品名 varchar(100),出租数量 int )insert into 出租 
    select 1,1 , '小模板',10 union 
    select 1,2 , '小模板',5create table 回收
    (合同号 int , 回收单号 int ,品名 varchar(100),回收数量 int )insert into 回收 
    select 1,1 , '小模板',10 union 
    select 1,2 , '小模板',6
    --测试语句
    select b.合同号,回收单号,b.品名,回收数量 from(
    select 合同号,回收单号,品名,回收数量,(select sum(回收数量) 
    from 回收 where 回收单号<=a.回收单号) as 回收总量
    from 回收 a) b, 
    (select 合同号,品名,sum(出租数量) as 出租总量  from 出租 group by 合同号,品名)c
    where b.合同号=c.合同号 and b.品名=c.品名 and 回收总量>出租总量/*--显示结果
    1 2 小模板 6
    */--删除测试环境
    drop table 回收
    drop table 出租
      

  5.   

    --建立测试环境
    create table 出租
    (合同号 int , 出租单号 int ,品名 varchar(100),出租数量 int )insert into 出租 
    select 1,1 , '小模板',10 union 
    select 1,2 , '小模板',5create table 回收
    (合同号 int , 回收单号 int ,品名 varchar(100),回收数量 int )insert into 回收 
    select 1,1 , '小模板',10 union 
    select 1,2 , '小模板',6
    --测试语句
    select b.合同号,回收单号,b.品名,回收数量,
    case when 回收数量<回收总量-出租总量 then 回收数量 
    else 回收总量-出租总量 end as 多回收数量
     from(
    select 合同号,回收单号,品名,回收数量,(select sum(回收数量) 
    from 回收 where 回收单号<=a.回收单号) as 回收总量
    from 回收 a) b, 
    (select 合同号,品名,sum(出租数量) as 出租总量  from 出租 group by 合同号,品名)c
    where b.合同号=c.合同号 and b.品名=c.品名 and 回收总量>出租总量/*--显示结果
    1 2 小模板 6 1
    */--删除测试环境
    drop table 回收
    drop table 出租
      

  6.   

    更正一下chenzhuo(Jack Chen)的朋友的语句:SELECT b.合同号, b.回收单号, b.品名, b.回收数量, 
          b.回收数量 - a.出租数量 AS 多回数量
    FROM a INNER JOIN
          b ON a.合同号 = b.合同号 AND b.回收数量 > a.出租数量
      

  7.   


    Select  y.回收数量 - x.出租数量 as 多回数量 
    From
    (Select 合同号,回收单号,sum(a.出租数量) as 出租数量 From a group by 合同号,回收单号) 
    x
    (Select 合同号,回收单号,sum(b.回收数量) as 回收数量 From b group by 合同号,回收单号)
    y
    Where x.合同号 = y.合同号 and  x.回收单号 = y.回收单号 and  y.回收数量 > x.出租数量
      

  8.   

    Select  x.合同号,x.回收单号,y.回收数量 - x.出租数量 as 多回数量 
    From
    (Select 合同号,回收单号,sum(a.出租数量) as 出租数量 From a group by 合同号,回收单号) 
    x
    (Select 合同号,回收单号,sum(b.回收数量) as 回收数量 From b group by 合同号,回收单号)
    y
    Where x.合同号 = y.合同号 and  x.回收单号 = y.回收单号 and  y.回收数量 > x.出租数量