我有一個SQL數據庫,像這樣:基於可變時間戳記錄如何對數據進行分區 - SQL
Id Text DateTime
----------------------------
1 Event1 1/1/1900 12:00:00
2 Event2 1/1/1900 12:10:11
3 Event3 1/1/1900 12:11:10
4 Event2 1/1/1900 12:12:12
5 Event3 1/1/1900 12:13:19
6 Event1 1/1/1900 12:14:22
7 Event2 1/1/1900 12:15:15
8 Event2 1/1/1900 12:18:16
9 Event3 1/1/1900 12:23:00
10 Event3 1/1/1900 12:24:11
我想找到該事件的第一發生,由事件1 occurence分區。即哪個事件2在任何其他事件2之前發生,但在事件1之後發生。
到目前爲止,我有這樣的:
SELECT t1.* from Database t1 join
(select ROW_NUMBER() OVER
(PARTITION BY Text ORDER BY DateTime ASC) AS Ranking,
Id from Database
where DateTime>(select MAX(DateTime) from Database where Text = 'Event1')) t2
on t1.id=t2.id and t2.Ranking=1
這隻適用於,雖然最後事件(因爲我使用MAX)。有沒有一些聰明的方法可以做到這一點,我只是看不到?澄清,我想所有事件(包括事件1與否,無所謂),如果他們是事件1發生後發生的第一種類型,將被標記。
在這種情況下,輸出將類似於:
Id
---
2
3
7
9
或
Id
---
1
2
3
6
7
9
您可以品嚐輸出添加到您的問題嗎? –