Запрос, чтобы получить Top 2 из каждой группы

У меня есть этот код sql:

SELECT NoteOID = HCN.ObjectID, PatientOID = HCN.PatientID, PatientVisitOID = 0, CollectedDT = HCN.CollectedDT FROM HClinicalNote HCN WITH(NOLOCK) where HCN.enddt is NULL and HCN.visitid in (select distinct visitOID from @tblCensus) order by HCN.PatientID,HCN.CollectedDT desc 

которые дают следующие результаты:

  NoteOID PatientOID CollectedDT 181382 890855 2011-09-14 21:31:00 169115 890855 2011-09-12 18:38:00 177466 890855 2011-09-09 19:49:00 175150 890855 2011-09-07 19:34:00 174057 890855 2011-09-06 19:25:00 172429 890855 2011-09-04 09:00:00 181387 13462666 2011-09-14 21:37:00 182224 13462666 2011-09-14 13:24:00 179269 13462666 2011-09-12 18:12:00 

Я бы хотел, чтобы у каждой группы PatientOID была верхняя часть 2 CollectedDT.

Если вы используете хотя бы SQL-Server 2005, вы используете CTE с функцией ROW_NUMBER :

 WITH CTE AS( SELECT NoteOID = HCN.ObjectID, PatientOID = HCN.PatientID, PatientVisitOID = 0, CollectedDT = HCN.CollectedDT, RN = ROW_NUMBER()OVER(PARTITION BY PatientOID ORDER BY CollectedDT ASC) FROM HClinicalNote HCN WHERE HCN.enddt is NULL AND HCN.visitid in (select distinct visitOID from @tblCensus) ) SELECT * FROM CTE WHERE RN <= 2 
 select T2.* from (SELECT NoteOID = HCN.ObjectID, PatientOID = HCN.PatientID, PatientVisitOID = 0, CollectedDT = HCN.CollectedDT, RN = ROW_NUMBER()OVER(PARTITION BY PatientOID ORDER BY CollectedDT ASC) FROM HClinicalNote HCN WHERE HCN.enddt is NULL AND HCN.visitid in (select distinct visitOID from @tblCensus) ) as T2 where T2.RN >=2 
Interesting Posts

case table pivot / pivot multiple column – MSSQL 2008

Запрос данных XML из таблицы с типом данных XML

Как вставить значения из столбца A таблицы X в столбец B таблицы Y – и упорядочить их случайным образом

SQL Server: что вызовет план выполнения?

Как получить разницу по дате, присоединив две таблицы?

Поиск индекса корейского алфавита (любой символ Юникода) в корейском Word (любое Unicode Word) на SQL-сервере

Производительность SQL Server с таблицей Key / Pair vs XML Field и XPath

Как оптимизировать SQL-запросы для BINARY (N)?

Ошибка возврата запроса SQL Update

как проверить, существует ли база данных?

Как найти определенный символ в любом столбце базы данных SQL?

SQL-запрос для захвата самой текущей записи с несколькими группировками

Как создать хранимые процедуры CRUD из таблицы в SQL Server Management Studio

SQL Server – идентифицировать успешное предложение where

TSQL Проверьте, не истекают ли поля месяца и года

Давайте будем гением компьютера.