首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

请问,这个SQL语句应该怎样写,待,多谢

2012-02-04 
请教,这个SQL语句应该怎样写,在线等待,急!!!谢谢!表A(主表)注:贷款主表SysID:款号Date:贷款日期Bank:贷款

请教,这个SQL语句应该怎样写,在线等待,急!!!谢谢!
表   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        
请问这种语句该怎么写,有什么好的办法,我急,谢谢!

[解决办法]
你的意思表述不清楚,那个应该用自然连接就可以了。用的哪种环境Oracle还是sql server2000???
[解决办法]
頂..........,學習
[解决办法]
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

[解决办法]
你就个最好是放到你的用户界面端处理好一点吧.

或者你把你的联结视图C再用游标遍历一次来处理
[解决办法]
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 ', '农业银行 ' , 5000

insert 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
[解决办法]
楼上的就可以了
[解决办法]
有个办法,前提条件是一天不能还款两次:

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
[解决办法]
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

热点排行