我有一个包含两列的表:
EventTimestamp
EventDescription
我不想从第一列返回一堆时间戳,而是返回一个整数,表示"EventDescription“出现的顺序,最早的时间戳是"1”,并且随着每一行递增。
因此,结果将如下所示:
1 Admission
2 Stuff happened
3 Discharged
这怎麽可能?
编辑
我意识到我遗漏了一个重要的细节。这里有第三个重要的专栏:
PatientID
EventTimestamp
EventDescription
因此,对于每个PatientID,RowNumber需要从1重新开始。换句话说,每个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
发布于 2018-06-07 05:04:51
使用ROW_NUMBER
SELECT ROW_NUMBER() OVER(PARTITION BY PatientID ORDER BY EventTimestamp ASC) RowNo,
EventDescription,
PatientId
FROM [TABLE]...
对结果集的输出进行编号。更具体地说,返回结果集分区中某一行的序列号,每个分区中的第一行从1开始。
https://stackoverflow.com/questions/50729467
复制相似问题