Как получить следующую дату в повторяющихся идентификационных последовательностях в SQL Server 2008

У меня есть таблица с несколькими вхождениями ее id и даты. Например:

id # date 1 abc 2014-Apr-05 2 def 2015-Mar-07 3 def 2014-Feb-02 4 abc 2013-Oct-23 5 abc 2016-Jan-10 6 xyz 2016-Jul-18 7 def 2014-Sep-03 8 xyz 2015-May-25 9 def 2013-Nov-11 10 abc 2015-Aug-16 

Мне интересно, как я могу прокручивать идентификаторы, а затем через даты и возвращать самую низкую / самую раннюю дату для каждого идентификатора. Такие как:

  id # date 1 abc 2013-Oct-23 2 def 2013-Nov-11 3 xyz 2015-May-25 

Спасибо!

Используйте Window Function для поиска first date в каждой группе [id#]

 SELECT [id#], [date] FROM (SELECT Row_number() OVER ( partition BY [id#] ORDER BY [date] ASC) rn, * FROM tablename)a WHERE rn = 1 

FIDDLE DEMO

Или используйте Aggregate и Join . Найдите minimum date в каждом Id# и join результат к главной таблице.

 SELECT a.[id#], a.[date] FROM Tablename A JOIN (SELECT Min([date]) dates, [id#] FROM Tablename GROUP BY [id#]) B ON a.[date] = b.[date] AND a.[id#] = b.[id#] 

Если посмотреть на ожидаемый результат, это можно сделать с помощью простой даты GROUP BY и MIN .

 SELECT [id #] , MIN([date]) AS FirstDate FROM YourTable GROUP BY [id #] ORDER BY [id #]; 
 DECLARE @t1 TABLE ( id1 VARCHAR(10), date1 DATE ) INSERT INTO @t1 VALUES ('abc', '2014-Apr-05'), ('def', '2015-Mar-07'), ('def', '2014-Feb-02'), ('abc', '2013-Oct-23'), ('abc', '2016-Jan-10'), ('xyz', '2016-Jul-18'), ('def', '2014-Sep-03'), ('xyz', '2015-May-25'), ('def', '2013-Nov-11'), ('abc', '2015-Aug-16') SELECT * FROM (SELECT id1, date1, ROW_NUMBER() OVER ( partition BY id1 ORDER BY date1) c FROM @t1) t WHERE tc = 1 
  • SQL-запрос для вычисления разницы по дате
  • Интервал проверки даты с SQL Server
  • Цикл через месяц и год до даты при использовании оператора слияния
  • Сравнение julian date с обычной датой в SQL
  • Функция SQL Server для добавления рабочих дней к дате
  • Получить последние 6 месяцев monthname.month number и Years in simple select statement
  • sql server с понедельника по пятницу с номера недели
  • Получить дату до дней / месяцев / лет с использованием функций даты в sql
  • Как получить столбец с первым 3 месяцами даты в SQL Server?
  • Дата преобразования SQL в yyyy-mm-dd
  • Получить список дат между двумя датами, используя функцию
  • Interesting Posts

    Обновление базы данных SQL Server из SQL-скриптов при установке

    Вычисление SQL Server ROW_NUMBER () OVER () для производной таблицы

    Как обновить диаграмму базы данных в Microsoft SQL Server Management Studio

    Как получить требуемую информацию на основе 3 таблиц в SQL Server

    Где я могу получить большую базу данных SQL Server?

    поведение в sql date

    Ошибка выборки сервера java sql

    SSIS – экспортировать данные Master-Detail в один плоский файл, содержащий как основную, так и подробную строку

    SQL Server: SELECT из sys.tables и sys.views

    Хранимая процедура SQL Server Получает значение из только что вставленной строки

    Уже открыт считыватель данных, связанный с этой командой. Как это возможно?

    Должен ли порядок предложений запроса LINQ влиять на производительность платформы Entity Framework?

    Файл трассировки SQL Server создает уникальный идентификатор для поля TextData типа NTEXT

    case null SQL Server 2008

    Генерация хеша базы данных SHA256 в SQL Server

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