2013-02-26 54 views
0

我正在檢查FireFox的SQLite管理器中的.sqlite文件,並且需要查看是否收集到任何數據。一個例子勝過千言萬語:sqlite:從相鄰行添加(減去)單元格並將結果放入新列的查詢

ReadDate   ReadValue 
1361900350183.00 137 
1361899753183.00 139 
1361900053183.00 138 

沒有主鍵,表不是按ReadDate或time排序的。 [更改輸入表是不是一種選擇!] 我希望做的是用簡單的SQL生成的表看起來像這樣:

ReadDate   ReadValue TimeOffset 
1361899753183.00 139 
1361900053183.00 138  300000 // this is ReadDate(1) - ReadDate(0) 
1361900350183.00 137  297000 // this is ReadDate(2) - ReadDate(1) 

這將讓我檢查數據,看看是否有數據值未被捕獲(TimeOffset將遠遠大於300000)。我還可以編寫一個額外的查詢來獲得超過閾值的所有TimeOffset的COUNT。 我很難繼續做我認爲是一個簡單的練習。我知道如何進行連接和排序(排序),但在這裏我需要將一行與另一行進行比較。我需要光標嗎?以及如何獲得額外的列?我有一種直覺,如果我只知道詞彙更好一點,我就能夠提出搜索條件並快速找到答案。 非常感謝, 戴夫

回答

0

首先,add an (empty) column你的表:

ALTER TABLE MyTable ADD COLUMN TimeOffset NUMERIC; 

然後,TimeOffset爲每個記錄是記錄ReadDate柱與下之間和記錄的區別更小的ReadDate,即最大ReadDate的記錄仍小於此值:

UPDATE MyTable 
SET TimeOffset = ReadDate - (SELECT MAX(ReadDate) 
          FROM MyTable AS t2 
          WHERE t2.ReadDate < MyTable.ReadDate); 
+0

謝謝CL!這很好。在SQLite管理器中也是如此!我將表格導出到Excel並以此方式操作,但這樣更容易。 – Dave 2013-02-27 22:44:26

相關問題