Получить 3 лучшие записи по дате за день SQL Server 2012

#sql #sql-server #partition

#sql #sql-сервер #раздел

Вопрос:

У меня есть таблица со строками, которые выглядят следующим образом:

 DateTime, Field1, Field2, Field3
  

Я хочу получить 3 лучшие записи по дате, по дням. Для одной записи я бы выполнил

 SELECT TOP(3) * 
FROM tum 
  

Мне это нужно на каждый день. Я предполагаю, что я бы использовал раздел или перекрестное применение, но фактический синтаксис для этого мне не ясен.

Комментарии:

1. TOP без ORDER BY не имеет смысла.

Ответ №1:

Вы бы использовали row_number() :

 select t.*
from (select t.*,
             row_number() over (partition convert(date, datetime) order by ?) as seqnum
      from t
     ) t
where seqnum <= 3;
  

Комментарии:

1. Этот синтаксис не кажется правильным. row_number принимает 0 аргументов.

2. @JeremyReynolds . . . . Да? Нет аргументов.