初学者100分求SQL语句一条! ( 积分: 100 )

  • 主题发起人 主题发起人 lys555555
  • 开始时间 开始时间
L

lys555555

Unregistered / Unconfirmed
GUEST, unregistred user!
有两个表分别是A(存款表)、B(取款表)
如:A表(存款表):
卡号 存入金额 日 期。。。。。。
123 10000 2007-7-1
124 18000 2007-7-1
125 2000 2007-7-4
123 2500 2007-7-5
123 3400 2007-7-6
B表(取款表):
卡号 取出金额 日 期。。。。。。
123 2000 2007-7-2
124 18000 2007-7-3
125 2000 2007-7-4
123 1200 2007-7-4
123 3000 2007-7-5
现在我要算出每张卡的结余金额还有多少?
 
select a.卡号,a.存入金额 - b.取出金额 as 结余金额 from
(Select 卡号,sum(存入金额) as 存入金额 from A表
group by 卡号) a
left join
(select 卡号,sum(取出金额) as 取出金额 from B表
group by 卡号) b
on a.卡号 = b.卡号
 
太容易了
select a.卡号,sum(a.存入金额)-(select sum(b.取出金额) from b where a.卡号=b.卡号) from a group by a.卡号
 
我试过了,以上语句绝对没有问题
 
你应该还有个卡的基本信息表,比如card
select c.卡号,c.最初金额+ sum(a.存入) - sum(a.取出) from card c left join
A表 on c.卡号=A表.卡号 a left join B表.卡号 b on a.卡号=b.卡号 group by c.卡号
 
select c.卡号,c.最初金额+ sum(a.存入) - sum(a.取出) from card c left join
A表 a on c.卡号=A表.卡号 left join B表.卡号 b on a.卡号=b.卡号 group by c.卡号
把a的位置放错了
 
sum(。。),可能要改一下,如果left join后有出现null,例如改成sum(isnull(存入,0))
 
to bytelife:
这条语句:select a.卡号,sum(a.存入金额)-(select sum(b.取出金额) from b where a.卡号=b.卡号) from a group by a.卡号
还是不行,会出现如果这张卡号只有存的,没有取款记录的情况,就会出现该张卡的结余金额为NULL
 
加sum(IIF(Null, 0, b.取出金额))呗。。。。楼主自己也要想啊
老等着别人给正确答案啊?
 
我想了半天都想不出来,但是上面提供的答案都不对,也不知道怎么改。
 
select 卡号 存入金额
from表A
union all
select 卡号 -(存入金额) from 表B
insert into #temp
select 卡号 ,sum(存入金额) as JE
from #temp
Group by 卡号
order by 卡号
这样就可以了!
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部