2013-02-26 1 views
0

FireFox의 SQLite Manager에서 .sqlite 파일을 검사 중이며 데이터가 수집되지 않았는지 확인해야합니다. 예를 들어 천 단어가 가치가 있습니다.sqlite : 인접한 행의 셀을 추가 (빼기)하고 결과를 새로운 열에 넣으십시오.

ReadDate   ReadValue 
1361900350183.00 137 
1361899753183.00 139 
1361900053183.00 138 

이 키는 기본 키가 아니며 ReadDate 또는 시간순으로 정렬되지 않습니다. [입력 테이블을 변경하는 옵션을 선택하지 않습니다!] 내가하고 싶은 무엇 는 간단한 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보다 훨씬 큽니다). 또한 임계 값을 초과하는 모든 TimeOffsets의 수를 얻기 위해 추가 쿼리를 작성할 수 있습니다. 나는 간단한 운동으로 상상하는 것을 계속하는 데 어려움을 겪고 있습니다. 조인과 정렬 (정렬 순서)을 수행하는 방법을 알고 있지만 여기서 한 행을 다른 행과 비교해야합니다. 커서가 필요합니까? 여분의 칼럼을 얻는 방법? 나는 내가 어휘를 조금 더 잘 알고 있다면, 검색 용어를 생각해 내고 그 답을 빨리 찾을 수 있다고 생각했다. 많은 감사, 데이브

답변

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 Manager에서도! Excel로 표를 내보내고 그런 방식으로 조작했지만 이것이 더 쉬운 방법입니다. – Dave