作者grence (多想两分钟 = =")
看板Database
标题Re: [SQL ] 前次交易余额
时间Thu Apr 23 01:54:27 2009
※ 引述《asklove (问爱)》之铭言:
: 资料库:MySQL
: 假设有一个资料表如下:
: 交易时间 卡号 当次交易金额 交易後余额
: 2009/03/01 05:49:56 123456789 0 445
: 2009/03/01 06:37:48 123456789 51 394
: 2009/03/01 17:07:59 123456789 0 394
: 2009/03/01 17:48:33 123456789 51 343
栏位扩充先想到 join.
随便建个表 test2, pk是 time, no
select * from test2
time no amt left_amt
1 1 0 445
2 1 51 394
3 1 0 394
4 1 51 343
SELECT t1.*, t2.left_amt before_amt
FROM `test2` as t1
left join `test2` as t2 on t1.no = t2.no and t2.time=(
select max(t3.time)
from test2 as t3
where t1.time>t3.time and t1.no=t3.no
)
time no amt left_amt before_amt
1 1 0 445 NULL
2 1 51 394 445
3 1 0 394 394
4 1 51 343 394
收工。
注解可参考本版
#19rLesZD
不同的是这方式可不限於连号整数
: 现在想要根据每次的"当次交易金额"和"交易後余额",
: 使用SQL查询语法产生如下结果:
: 交易时间 卡号 当次交易金额 交易後余额 交易前余额
: 2009/03/01 05:49:56 123456789 0 445 null
: 2009/03/01 06:37:48 123456789 51 394 445
: 2009/03/01 17:07:59 123456789 0 394 394
: 2009/03/01 17:48:33 123456789 51 343 394
: 也就是多出一个"交易前余额"的栏位,
: 请问各位高手,光用SQL语法能办得到吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.229.193.203
※ 编辑: grence 来自: 61.229.193.203 (04/23 02:42)
1F:推 evernever:col 5 不是等於 col 3 + col 4 吗? 怎麽还要 join? 04/23 10:54
2F:→ grence:原po把文删掉了让我的作法像笨蛋一样XDD 04/23 17:30
我错了,是版主删的 @@a
在原文下的推文
3F:推 grence:当次金额+交易後金额 as 交易前余额(逃)04/23 00:33
4F:→ asklove:不行...交易前余额要用来验算 不能直接用前两个栏位相加04/23 00:36
5F:→ asklove:因为有可能资料不对变成 50 394 44504/23 00:41
※ 编辑: grence 来自: 61.229.202.62 (04/23 17:36)
6F:推 asklove:为什麽会被版主砍掉呢? 04/23 21:00