Как начать номера строк из определенной строки в SQL Server - PullRequest
2 голосов
/ 06 мая 2019

У меня есть таблица со столбцом ARR, в которой хранятся различные значения. Я должен создать номер строки, когда мой столбец ARR имеет значение 4.

Мой стол

Sno   Data   ARR
----------------
 1    AAA     0
 2    AAA     1
 3    AAA     1
 4    AAA     2
 5    AAA     3
 6    AAA     4
 7    AAA     5
 8    AAA     5
 9    AAA     6
10    AAA     4
11    AAA     5
12    AAA     6

Требуемый результат:

Sno   Data   ARR   RowNumber
----------------------------
 1    AAA     0       0
 2    AAA     1       0 
 3    AAA     1       0
 4    AAA     2       0
 5    AAA     3       0
 6    AAA     4       1
 7    AAA     5       2
 8    AAA     5       3
 9    AAA     6       4
10    AAA     4       1
11    AAA     5       2
12    AAA     6       3

Здесь, в Sno=10 (значение 4 в ARR), rownumber начинается снова с 1.

1 Ответ

5 голосов
/ 06 мая 2019

Я думаю, что вы хотите:

select t.sno, t.data, t.arr,
       (case when grp >= 1
             then row_number() over (partition by grp order by sno)
             else 0
        end) as rownumber
from (select t.*,
             sum(case when arr = 4 then 1 else 0 end) over (order by sno) as grp
      from t
     ) t;
...