我有一个记录日期的日志表。
我想找出第二次和第三次通话的日期。
找出第二次和第三次通话的日期的最佳方法是什么?
答案 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)