一个SQL汇总的难题(100分)

  • 主题发起人 主题发起人 retun
  • 开始时间 开始时间
R

retun

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个表,里面有FCard,FInDate,FMoneyAfter三个字段,这是一个消费明细的其中
一张表,我现在需要汇总里面的消费后余额(FMoneyAfter),每消费一次,系统都会自动
增加一条最后余额的记录,但里面卡号(FCard)相同,日期不同,现在要求把所有的卡按
他们最近或消费的余额剩下最少的进行统计,以得出所有人员现在总共的余额.
假设 TFills 表记录如下
FCard FInDate FMoneyAfter
0001 20020101 500
0003 20020101 600
0004 20020101 450
0001 20020102 450
0002 20020102 350
0003 20020102 500
0003 20020103 400
//从上我们可以看出共有四张卡,0001现余450/0002余350/0003余400/0004余450,总共
//余额为1650,但用SELECT语句应该如何写呢?请不要用其他方法解决,我只想要用SQL语
//句解决
 
Select sum(fmoneyAfter)
From
(Select AA.pcard,AA.findate,AA.FMoneyAfter
From Tfills AA,
(Select pcard,max(findate) as tmp From Tfills Group by pcard) BB
Where AA.pcard=BB.pcard and AA.findate=BB.tmp) CC
 
谢谢!运行后没有报错,不过还没验证是否正确,我开始想法是按金额的字段由小到大排列,
卡号设置为关键字,不知是否也可行?只是我用到 DISTINCT 时就会报错,除非我不排序
 
如果说剩余金额只会一直递减的话,你的想法也是可行的

Select sum(tmp)
From (Select pcard,min(fmoneyAfter) as tmp
From Tfills
Group by pcard) AA
 
select sum(money)
from (select pcard,max(findate),min(fmoneyafter) from tfills
group by pcard)
 
TO:QuickSilver
你不提我都忘记了有充值这回事,所以钱会增加的,看来我考虑问题不周到,
谢谢指教!
 

Similar threads

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