2015-10-30 50 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

对不起,迟到的回应..请找到我编辑的解决方案,这将为你工作:) –