该如何写这条SQL语句(100分)

  • 主题发起人 主题发起人 jammi
  • 开始时间 开始时间
J

jammi

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库A:
date money
2000-12-20 1000
2000-12-10 -500
2000-12-28 200
2000-10-06 700
2000-12-10 -300

日期字段无序且有可能相同,想要用SQL语句得出如下结果:
date money 余额
2000-10-06 700 700
2000-12-10 -300 400
2000-12-10 -500 -100
2000-12-20 1000 900
2000-12-28 200 1100

date money 余额
2000-10-06 700 700
2000-12-10 -300
2000-12-10 -500 -100
2000-12-20 1000 900
2000-12-28 200 1100
也可,请教各位大虾.

预祝各位新年好!!!

 
你的余额怎么来的?
 
你的库A改成这样
date money 余额
令库B保存当前余额
每增加一条记录置 date money B.余额+money
更新B的余额 余额+A.money
不就得啦?
 
似乎在A表中需要一个主键才能在()定位NEXT的记录
Select aaa.date , aaa.money ,
() as '余额' from A.aaa
order by date
 
我想通过一条SQL语句就能得出以上结果哦?余额是money的累计,我的数据库是SQL Server
 
小提示:
这样的表结构是不合理的。想做好必须重写表结构。
 
请各位提供良方!
 
一条SQL语句好像恨困难耶!如果用存储过程,创建一个临时表,然后用游标操作产生
余额数据,最后显示,能达到你要得效果
 
SELECT date, money, (select sum(money) from test where date<=table1.date) AS 余额
FROM test AS table1
ORDER BY date;
 
一条sql不能实现
 
select a.date,a.monye,sum(b.money) as '余额'
from test a,test b
where a.date>b.date or (a.date=b.date and a.money>=b.money)
group by a.date,a.money
order by a.date
 
to killgates:你的回答没有考虑date相同的情况
to liu_liu:你的b表从何来?
综合killgates和liu_liu的答案得出:
select date,money,(select sum(money) from a where (date<b.date or (date=b.date
and money<=b.money))) as '余额' from a as b group by date,money order by date
但当两条记录date与money字段的内容都相同时,'余额'便会错误?

各位还有什么好办法?
 
data相同,money也相同的情况没有考虑
假设数据表为test
to jammi:[b表]就是test表,[a表]也是test表

 
多人接受答案了。
 

Similar threads

I
回复
0
查看
855
import
I
I
回复
0
查看
695
import
I
I
回复
0
查看
777
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部