2012-03-05 6 views
2

날짜를 기록하는 로그 테이블이 있습니다.여러 통화에 날짜 가져 오기

두 번째 및 세 번째 호출 날짜를 찾고 싶습니다.

  • 나는
  • 내가 MAX (DateCreated)를 사용하여 마지막 날짜를 얻을 MIN (DateCreated)를 사용하여 첫 번째 통화를 얻을. 이것은 두 번째 호출 일 수도 있습니다.

두 번째 및 세 번째 호출 날짜를 찾는 가장 좋은 방법은 무엇입니까?

답변

3

난 그냥 함께 3 개 행을 하나 개의 쿼리에서 얻을 것을

SELECT TOP 3 * 
FROM LogTable 
ORDER BY LogDate ASC -- DESC if you need the last 3 

당신은 당신이 사용할 수있는, 그들에게 하나 하나를해야하는 경우 :

WITH LogByDate AS 
(
    SELECT LogDate, 
    ROW_NUMBER() OVER (ORDER BY LogDate) AS 'RowNumber' 
    FROM LogTable 
) 
SELECT * 
FROM LogByDate 
WHERE RowNumber = 2; -- RowNumber=3 for the third line 
+1

나는 KISS 방식을 좋아합니다. 나는 당신의 WHERE가 (2, 3) 안에 있어야한다고 제안 할 것입니다, 맞습니까? – DOK

+0

@DOK thanks :) RowNumber = 2를 사용한 이유는 "두 번째 통화의 날짜를 얻는 방법은 무엇입니까?"라는 질문을 해석했기 때문에 세 번째 통화를 얻는 방법은 무엇입니까? –

2

는 분석 기능을 사용해보십시오 :

;WITH CTE AS 
(
    SELECT *, ROW_NUMBER() OVER(PARTITION BY CallId ORDER BY DateCreated) Corr 
    FROM dbo.YourTable 
) 
SELECT * 
FROM CTE 
WHERE Corr IN (2,3)