我正在尝试计算每个帐户的数据集中每条记录之间的日期差异。如何在使用MySQL的变量中存储最后一行的值?
这里的数据,我有
id aid value
1 1 2015-01-01
2 1 2015-01-07
4 1 2015-01-08
6 1 2015-04-10
3 2 2015-02-01
5 2 2015-02-05
我首先需要的地方,我可以用TIMESTAMPDIFF
计算天数的不同组合数据(即TIMESTAMPDIFF(DAY, previousValue, currentValue)
)。
我怎样才能在数据集中相结合的行约,看起来像这样
aid currentValue previousValue
1 2015-01-07 2015-01-01
1 2015-01-08 2015-01-07
1 2015-04-10 2015-01-08
2 2015-02-05 2015-02-01
从那里我可以很容易地计算出当前和以前的值之间的天差。
请注意,我有一个大的数据集,我不能在我的选择中使用子查询,这就是为什么我需要知道如何使用变量来做到这一点。
我最初的数据集如何转换为第二个数据集在那里我有CurrentValue的,PREVIOUSVALUE为每个帐户?
这里是SQL生成上述
CREATE TEMPORARY TABLE lst
(
id int,
account_id int,
value date
);
INSERT INTO lst VALUES
(1, 1, '2015-01-01')
, (2, 1, '2015-01-07')
, (3, 2, '2015-02-01')
, (4, 1, '2015-01-08')
, (5, 2, '2015-02-05')
, (6, 1, '2015-04-10');
CREATE TEMPORARY TABLE lst1 AS
SELECT * FROM lst ORDER BY account_id, value ASC;
更新了数据表
这是我尝试下面
'1', '2015-01-01', '2015-01-07'
'1', '2015-01-07', '2015-01-08'
'1', '2015-02-05', '2015-04-10'
'2', '2015-01-08', '2015-02-01'
'2', '2015-02-01', '2015-02-05'
我认为这是在预期结果的错误,因为它是显示* next *值而不是* previous *之一。 –
你是对的。谢谢你的提示。我只是更新我的问题来纠正预期的数据 –