表a 为申请人的资料 有一个合同号为关键字
合同号  姓名  性别  
1234   张三  男
1235   李四  女
1236   王五  男
表b为借款资料   关键字也是合同号
合同号  借款数额  还款数额  时间
1235   3000     0       2006-1-1
1234   2000     0       2007-1-1
1236   300      0       2006-1-1
1234   0        1000    2008-1-1
现在想列表所有人员的借款情况
合同号   姓名   借款数额
1234   张三    1000
1235   李四    3000
1236   王五    300

解决方案 »

  1.   


    select
       a.合同号,
       a.姓名,
       sum(借款数额)-sum(还款数额) as 借款数额
    from 表a a
    left join 表b b
      on b.合同号 = a.合同号
    group by a.合同号,a.姓名
      

  2.   

    select c.*,d.借款数额 from 表a c inner join (select
       a.合同号,
       a.姓名,
       sum(借款数额)-sum(还款数额) as 借款数额
    from 表a a
    left join 表b b
      on b.合同号 = a.合同号
    group by a.合同号,a.姓名
    ) d on c.合同号=d.合同号 and c.姓名=d.姓名
      

  3.   

    select
       a.合同号,
       a.姓名,
       b.*
    from 表a a
    left join 表b b
      on b.合同号 = a.合同号
    where not exists(select 1 from 表b where 合同号 = b.合同号 and  时间> b. 时间)
      

  4.   


    select bb.合同号, bb.姓名, bb.借款数额, b.时间,b.其他需要输出的字段
    from
    (
    select
       a.合同号,
       a.姓名,
       sum(借款数额)-sum(还款数额) as 借款数额
    from a 
    left join b 
      on b.合同号 = a.合同号
     group by a.合同号,a.姓名
    )bb left join b on bb.合同号=b.合同号
    where b.时间=(select max(b.时间)from b)试试看对不
      

  5.   

    select t1.合同号,t1.姓名,t1.借款数额,t2.其他列,t3.时间 from (
    select
       a.合同号,
       a.姓名,
       sum(借款数额)-sum(还款数额) as 借款数额
    from 表a a
    left join 表b b
      on b.合同号 = a.合同号
    group by a.合同号,a.姓名
    )t1 inner join (
    select 合同号,max(时间) as 时间 from 表b
    )t3 on t1.合同号=t3.合同号
    inner join 表b t2 on t2.合同号=t3.合同号 and t2.时间=t3.时间
      

  6.   

    create table 表a (合同号 int, 姓名 nvarchar(5), 性别 nvarchar(1))
    insert into 表a select 1234,'张三','男'
    union all select 1235,'李四','女'
    union all select 1236,'王五','男'
    create table 表b (合同号 int,借款数额 int, 还款数额 int, 时间 datetime,其他列 nvarchar(10))
    insert into 表b select 1235 , 3000, 0,'2006-1-1','苛晨决在'
    union all select 1234 , 2000, 0,'2007-1-1','械在有以'
    union all select 1236 , 300,  0,'2006-1-1','有关的要玫'
    union all select 1234 , 0,  1000,'2008-1-1','中不产上下'
    go
    select t1.合同号,t1.姓名,t1.借款数额,t2.其他列,t3.时间 from (
    select
       a.合同号,
       a.姓名,
       sum(借款数额)-sum(还款数额) as 借款数额
    from 表a a
    left join 表b b
      on b.合同号 = a.合同号
    group by a.合同号,a.姓名
    )t1 inner join (
    select 合同号,max(时间) as 时间 from 表b group by 合同号
    )t3 on t1.合同号=t3.合同号
    inner join 表b t2 on t2.合同号=t3.合同号 and t2.时间=t3.时间go
    drop table 表a,表b
    /*
    合同号         姓名    借款数额        其他列        时间
    ----------- ----- ----------- ---------- -----------------------
    1235        李四    3000        苛晨决在       2006-01-01 00:00:00.000
    1236        王五    300         有关的要玫      2006-01-01 00:00:00.000
    1234        张三    1000        中不产上下      2008-01-01 00:00:00.000(3 行受影响)*/
      

  7.   

    楼主朋友,直接用2个表的连接查询就可以了.
    select 
      a.合同号
      ,a.姓名
      ,(sum(b.借款数额)-sum(b.还款数额)) as 借款数额
    from
      表a a
    left join
      表b b
    on
      a.合同号=b.合同号
    group by
      a.合同号,a.姓名
    having  
      (sum(b.借款数额)-sum(b.还款数额))<>0
    order by
      a.合同号