Один из "более простых" способов получить N-ую строку в группе - это использовать CTE и ROW_NUMBER
:
WITH CTE AS(
SELECT Account_ID,
Note_Entry_Dt_Time,
ROW_NUMBER() OVER (PARTITION BY AccountID ORDER BY Note_Entry_Dt_Time DESC) AS RN
FROM dbo.YourTable)
SELECT Account_ID,
Note_Entry_Dt_Time
FROM CTE
WHERE RN = 2;
Конечно, если ACCOUNT_ID
имеет только 1 строку, тогда он не будет возвращен в наборе результатов.
Оператор OP "Строка не всегда будет 2." из комментариев вступает в противоречие с их утверждением "Я пытаюсь вытащить второй последний NOTE_ENTRY_DT_TIME
" в вопросе. В лучшем случае это означает, что у ОП есть строки с одинаковой датой, которая может быть самой «последней» датой. Если это так, то просто нужно заменить ROW_NUMBER
на DENSE_RANK
. Однако данные их выборок не позволяют предположить, что это так.