表 A (主表)注:贷款主表
SysID:款号 Date:贷款日期 Bank:贷款银行 Sum:实际贷款金额
SysID      Date        Bank        Sum    
DK07001    2007-04-01  中国银行    1000   
DK07002    2007-04-12  农业银行    2000   
DK07003    2007-04-15  中国银行    3000
DK07004    2007-04-22  中国银行    4000
DK07005    2007-04-26  农业银行    5000
表 B (从表)注:还款从表
SysID:主从表关联字段 Date:还款日期 Sum:每次还款金额
SysID    Date           Sum
DK07002  2007-04-10     200
DK07002  2007-04-20     400
DK07004  2007-04-26     100
DK07004  2007-05-26     500
联接后产生视图 C
SysID      Date        Bank        Sum   Date1       Sum1
DK07001    2007-04-01  中国银行    1000  NULL        NULL
DK07002    2007-04-12  农业银行    2000  2007-04-10  200  ??
DK07002    2007-04-12  农业银行    2000  2007-04-20  400  ??
DK07003    2007-04-15  中国银行    3000  NULL        NULL
DK07004    2007-04-22  中国银行    4000  2007-04-26  100  ??
DK07004    2007-04-22  中国银行    4000  2007-05-26  500  ??
DK07005    2007-04-26  农业银行    5000  NULL        NULL我在时行分类汇总时需要还款日期,所以关联两表,但当我关联以后就会产生多余的贷款金额,请高手指点!我期望的结是:
SysID      Date        Bank        Sum   Date1       Sum1
DK07001    2007-04-01  中国银行    1000  NULL        NULL
DK07002    2007-04-12  农业银行    2000  2007-04-10  200  ??
DK07002    2007-04-12  农业银行    NULL  2007-04-20  400  ??
DK07003    2007-04-15  中国银行    3000  NULL        NULL
DK07004    2007-04-22  中国银行    4000  2007-04-26  100  ??
DK07004    2007-04-22  中国银行    NLL  2007-05-26  500  ??
DK07005    2007-04-26  农业银行    5000  NULL        NULL    
请问这种语句该怎么写,有什么好的办法,我急,谢谢!

解决方案 »

  1.   

    你的意思表述不清楚,那个应该用自然连接就可以了。用的哪种环境Oracle还是sql server2000???
      

  2.   

    SELECT SysID, Date,Bank,Sum,
           (SELECT MAX(Date) FROM 表B WHERE SysID = 表A.SysID) AS Date1,
           (SELECT SUM(Sum) FROM 表B WHERE SysID = 表A.SysID) AS Sum1
    FROM 表A
      

  3.   

    reate table t1(SysID varchar(20), Date varchar(20), Bank varchar(20), Sum int   )create table t2(SysID varchar(20), Date varchar(20), Sum int   )
    insert into t1
    select 
    'DK07001','2007-04-01' , '中国银行',1000
     union all select  
    'DK07002','2007-04-12' , '农业银行' ,2000
     union all select 
    'DK07003',    '2007-04-15' , '中国银行',3000
     union all select 
    'DK07004' ,   '2007-04-22'  ,'中国银行' ,   4000
     union all select 
    'DK07005',    '2007-04-26',  '农业银行'  ,  5000insert into t2 
    select
    'DK07002',  '2007-04-10' ,    200
    union all select 
    'DK07002',  '2007-04-20',     400
    union all select 
    'DK07004',  '2007-04-26',     100
    union all select 
    'DK07004',  '2007-05-26',     500
    SELECT a.SysID, a.Date,a.Bank,a.Sum,
           b.date,b.sum
    FROM t1 a left join t2 b on a.SysID = b.SysID
      

  4.   

    有个办法,前提条件是一天不能还款两次:select 贷款.*,临时.* from 贷款,
    (
    select * ,
    (select 金额 from (select 还款.sysid,min(还款.date)as date,贷款.金额 from 还款,贷款 where 还款.sysid=贷款.sysid group by 还款.sysid ,贷款.je)A 
    where 还款.sysid=A.sysid and 还款.sdate=A.sdate)as 贷款金额
    from 还款
    )临时 where 贷款.sysid *=临时.sysid
      

  5.   

    select SysID, Date,Bank,date,sum =
      case 
        when  date1 is null then  Sum
        when  date1 = (select min(d.Date) from t2 d where d.SysID = c.SysID) then Sum
      end,date1,sum1 from
        (
        select a.*,b.date as date1,b.sum as sum1 from t1 a left join t2 b  on  a.SysID = b.SysID
        ) c