2012-03-05 21 views
2

我有一个记录日期的日志表。获取多个电话的日期

我想找出第二次和第三次电话的日期。

  • 我用MIN(dateCreated会)获得第一个呼叫
  • 我得到使用MAX(dateCreated会)的最后日期。这也可能是第二个电话。

找出第二个和第三个电话的日期的最佳方法是什么?

回答

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谢谢:)我刚刚使用了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)