2012-08-17 63 views
0

即时通讯使用mysql和这是我在当前表中的条目。如何在当前行中选择前一行的值和过去的值?

所以这里前一资产负债为当月应较上月余额。我如何从前一行数据库中获取此值。

Previous_balance Remaining_Balance 
     0.00  42.64 
     0.00  627.69 
     0.00  45.54 
     0.00  67.60 

结果应该是

Previous_balance Remaining_Balance 
     0.00  42.64 
     42.64  627.69 
     627.69  45.54 
     45.54  67.60 

我有ID为PK,我想存储新previous_balance数据库和打印表格。所以我可以计算每月费用和使用情况以及其他内容。感谢您的回答。

+0

mySQL支持LEAD和LAG功能吗? – Randy 2012-08-17 16:09:38

+1

你有任何其他行标识符(唯一的ID,日期或月/年字段)?如果是这样,请更新您的问题,以便我们提供帮助。 – 2012-08-17 16:16:20

+0

我有ID作为PK。其实我想在上个月的数据库中存储当前月份的新余额,并在PHP表单上打印。所以我可以计算月费和使用情况以及其他内容。感谢您的回答。 – 2012-08-17 16:30:43

回答

0

在假设id场是有序的,试试这个:

UPDATE Balances 
    SET b1.Previous_balance = COALESCE((SELECT b2.Remaining_Balance 
             FROM Balances b2 
             WHERE b2.id < b1.id 
             ORDER BY b2.id DESC 
             LIMIT 1),0) 
FROM Balances b1 

我没有的MySQL安装,所以我不能保证所有的语法。我知道SELECT语句可以工作。

+0

感谢它的作品 – 2012-08-20 15:26:01

0

喜欢的东西

SELECT LAST(remaingBalance) as previousBalance, FIRST(remaingBalance) as remaingBalance FROM ...
WHERE ...
GROUP BY month

http://www.w3schools.com/sql/sql_functions.asp

+0

其实我希望商店上个月的余额保持为当前月份在数据库中的新前余额,并在PHP表单上打印。所以我可以计算月费和使用情况以及其他内容。感谢您的回答 – 2012-08-17 16:34:48

相关问题