2016-06-18 3 views
-2

나는 선박의 신호 항목이있는 4 열 테이블이 있습니다. 첫 번째 열은 유닉스 시간이고 3 개월 행 항목입니다. 2 번째는 배의 이름입니다. 세번째는 경도입니다. 4 위가 위도입니다. 서로 다른 시간대에있는 동일한 선박의 많은 항목이 있습니다. 우주선에 10 분 이상 5 시간 미만의 항목이없는 테이블 행을 찾기 위해 SQL Server 쿼리를 원합니다. 이 같은유닉스 시간에 대한 SQL 서버 쿼리

+2

그래서 어떤 부분에 문제가 있습니까? 지금까지 어떤 시도를하셨습니까? –

+0

당신은 우리에게 당신에게 적절한 DDL을 제공하는 것을 귀찮게하지 않았지만 당신을 위해 질문을 작성하라고 요구하고 있습니다. – Alex

답변

0

뭔가는 (CTE + ROW_NUMBER()과 자기 가입)을 위해 일을해야합니다

;WITH cte AS(
SELECT unixtime, 
     shipname, 
     longitude, 
     latitude, 
     ROW_NUMBER() OVER (PARTITION BY shipname ORDER BY unixtime) as rn 
FROM YourTable) 

SELECT * 
FROM cte c1 
LEFT JOIN cte c2 
    ON c1.shipname = c2.shipname and c1.rn = c2.rn -1 
    AND (c2.unixtime - c1.unixtime) between 600 and 18000 
WHERE c2.unixtime IS NULL 

신기원 타임 스탬프 (unixtime) 초 수입니다 1970-01-01T00:00:00Z 그래서 당신이 10 분으로 변환해야하기 때문에 초 (600) 및 초당 5 시간 (18000).