返回序号而不是时间戳

时间:2018-06-06 20:56:33

标签: sql-server tsql sql-server-2012

我有一个包含两列的表:

1  Admission
2  Stuff happened
3  Discharged

我不想从第一列返回一堆时间戳,而是要返回一个整数,表示" EventDescription"发生了,从最早的时间戳开始," 1"并且每行递增。

所以结果看起来像是:

PatientID
EventTimestamp
EventDescription

这怎么可能?


修改
我意识到我遗漏了一个重要的细节。这是第三个重要的专栏:

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

因此RowNumber需要为每个PatientID再次启动1。换句话说,每个PatientID都需要自己的RowNumber系列。因此,结果看起来像:

background-size:cover

1 个答案:

答案 0 :(得分:4)

使用ROW_NUMBER

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

ROW_NUMBER

  

对结果集的输出进行编号。更具体地说,返回结果集分区中行的顺序号,从1开始,每个分区的第一行。