获得多个电话的日期

时间:2012-03-05 17:09:05

标签: sql sql-server sql-server-2008 tsql

我有一个记录日期的日志表。

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

  • 我使用MIN(DateCreated)
  • 接到第一个电话
  • 我使用MAX(DateCreated)获取最后一个日期。这也可能是第二次通话。

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

2 个答案:

答案 0 :(得分: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 :(得分: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)