Возврат порядкового номера вместо отметок времени - PullRequest
0 голосов
/ 06 июня 2018

У меня есть таблица с двумя столбцами:

EventTimestamp
EventDescription

Вместо того, чтобы возвращать кучу временных меток из первого столбца, я хотел бы вернуть целое число, указывающее последовательность, в которой "EventDescription"произошло, начиная с самой ранней отметки времени, равной «1» и увеличивающейся с каждой строкой.

Таким образом, результаты будут выглядеть примерно так:

1  Admission
2  Stuff happened
3  Discharged

Как это возможно?


РЕДАКТИРОВАТЬ
Я понял, что пропустил важную деталь.Есть 3-й значимый столбец:

PatientID
EventTimestamp
EventDescription

Таким образом, RowNumber должен начинаться заново с 1 для каждого PatientID.Другими словами, каждому PatientID нужна своя серия номеров RowNumbers.Соответственно, результаты будут выглядеть примерно так:

PT1  1  Admission
PT1  2  Stuff happened
PT1  3  Discharged
PT2  1  Admission
PT2  2  Stuff happened
PT2  3  Discharged
PT3  1  Admission
PT3  2  Stuff happened
PT3  3  Discharged

1 Ответ

0 голосов
/ 07 июня 2018

Использование ROW_NUMBER:

SELECT ROW_NUMBER() OVER(PARTITION BY PatientID ORDER BY EventTimestamp ASC) RowNo, 
       EventDescription,
       PatientId
FROM [TABLE]...

ROW_NUMBER

Пронумеровывает выходные данные набора результатов.В частности, возвращает порядковый номер строки в разделе набора результатов, начиная с 1 для первой строки в каждом разделе.

...