2017-08-08 64 views
1

創建自定義編號我有一個包含這些列的表:Postgres裏

track track_id 
----------------- 
1  1 
1  1 
0  2 
1  2 
1  2 
0  3 
1  3 
1  3 
0  4 
0  5 
.... 

我列track並要計算track_id,具體做法是: 由1開始,每次track爲0, track_id應該增加1(0指定新軌道的開始)。

我希望我可以設置一個變量,然後在每次條件爲真時增加它,但似乎沒有一個簡單的方法來做到這一點。

我將不勝感激一個查詢,可以拉這個。謝謝。

回答

1

首先,您需要一個指定排序的列。 SQL表格代表無序集合。讓我假設你有這樣一個專欄,我只需要撥打id

然後,您可以使用累計總和:

select t.*, 1 + sum((track = 0)::int) over (order by id) as track_id 
from t; 

如果track只需要在值0和1,您可以簡化這甚至更多:

select t.*, 1 + sum(1 - track) over (order by id) as track_id 
from t; 
+0

謝謝簡化版本工作得很好。 – simpsonment1