我正在嘗試計算每個帳戶的數據集中每條記錄之間的日期差異。如何在使用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 *之一。 –
你是對的。謝謝你的提示。我只是更新我的問題來糾正預期的數據 –