我有一个包含两列的表:
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
答案 0 :(得分:4)
使用ROW_NUMBER
:
SELECT ROW_NUMBER() OVER(PARTITION BY PatientID ORDER BY EventTimestamp ASC) RowNo,
EventDescription,
PatientId
FROM [TABLE]...
对结果集的输出进行编号。更具体地说,返回结果集分区中行的顺序号,从1开始,每个分区的第一行。