作者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)
推 evernever:col 5 不是等於 col 3 + col 4 嗎? 怎麼還要 join? 04/23 10:54
→ grence:原po把文刪掉了讓我的作法像笨蛋一樣XDD 04/23 17:30
我錯了,是版主刪的 @@a
在原文下的推文
推 grence:當次金額+交易後金額 as 交易前餘額(逃)04/23 00:33
→ asklove:不行...交易前餘額要用來驗算 不能直接用前兩個欄位相加04/23 00:36
→ asklove:因為有可能資料不對變成 50 394 44504/23 00:41
※ 編輯: grence 來自: 61.229.202.62 (04/23 17:36)
推 asklove:為什麼會被版主砍掉呢? 04/23 21:00