1
我有如下表:SQL Server 2012的分配基於零發生的ID值
ID Stop
---------
1 NULL
2 100
3 NULL
4 50
5 100
6 210
7 300
8 NULL
9 NULL
10 20
11 70
我所要做的是創建一個分配基礎上的位置,一個ID的新列NULL值。基本上,停止列是停止花費的時間量,NULL值是花在運動上的時間。我希望連續停止(id列是按時間順序),以便能夠用某種標識符進行標識。這是我想什麼:
ID Stop StopID
------------------
1 NULL NULL
2 100 1
3 NULL NULL
4 50 2
5 100 2
6 210 2
7 300 2
8 NULL NULL
9 NULL NULL
10 20 3
11 70 3
我一直在擺弄這個查詢,但我似乎無法得到它的權利:
select a.id, a.Stop,
(case when a.Stop IS NOT NULL
then sum(case when a.Stop IS NOT NULL then 1 end) over (partition by x order by id)
end) as StopID
from (select a.*,
sum(case when a.Stop IS NOT NULL then 0 else 1 end) over (order by id) as x
from data a
) a
它產生如下:
ID Stop StopID
-------------------
1 NULL NULL
2 100 1
3 NULL NULL
4 50 1
5 100 2
6 210 3
7 300 4
8 NULL NULL
9 NULL NULL
10 20 1
11 70 2