2015-10-30 68 views
1

我有一個3列的表格作爲TimeStamp,BidPrice & AskPrice。 我必須比較來自連續行的數據,比如第1行的第一個比較,以及下一個第2行的第一個比較,直到表的末尾。當行的BidPrice或AskPrice不匹配時,我必須將其時間戳的差異轉儲到不同的表中,只有一列作爲TimeStamp。如上所示在MySQL中的表中比較兩個連續的行數據

+---------------+------------+-----------+ 
| ExchTimeStamp | BidPrice0 | AskPrice0 | 
+===============+============+===========+ 
| 1127918883925 | 58765  | 59395  | 
+---------------+------------+-----------+ 
| 1127918883926 | 58765  | 59395  | 
+---------------+------------+-----------+ 
| 1127918883965 | 58765  | 59390  | 
+---------------+------------+-----------+ 
| 1127918884043 | 58765  | 59320  | 
+---------------+------------+-----------+ 
| 1127918884050 | 58765  | 59315  | 
+---------------+------------+-----------+ 

表是採樣數據,因爲我有比較行1 & 2的投標價格,因爲它們是不同的I必須找到這些各行的時間戳的差,並插入值到一個新的表說TimeStampData。

預期結果

+---------------+ 
| TimeStamp  | 
+===============+ 
| 0    | 
+---------------+ 
| 39   | 
+---------------+ 
| 78   | 
+---------------+ 
| 7    | 
+---------------+ 

我非常新的MySQL所以需要一些幫助了它

+0

請更新您的問題與您有的查詢,一些示例數據和一個例子的期望輸出(基於樣本數據) – Lima

+0

@利馬編輯樣本數據.. –

回答

-1

你可以做這樣的事情

 ; WITH CTE AS 
      (SELECT Column1,Timstampcolumn,LAG(Timstampcolumn,1) OVER 
    (PARTITION BY Column1 ORDER BY Column1) AS OLD_TIMESTAMP FROM Yourtable 
    WHERE 'youruserid' 

    ) 
     SELECT *,DATEDIFF(DD,OLD_TIMESTAMP,Timstampcolumn) 
     FROM CTE WHERE OLD_TIMESTAMP IS NOT NULL 

其中LAG 1意味着你要比較下一行

+0

謝謝jayanti,但我沒有得到如何這將比較每次2行列? –

+0

對不起,遲到的迴應..請找到我編輯的解決方案,這將爲你工作:) –