Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Нумерация  [new]
Васелина
Member

Откуда:
Сообщений: 42
Есть таблица nop-номер операции , koduh-код участка

нужно проставить нумерацию по коду участка, в последовательности от номера операции


CREATE TABLE t ( nop int,koduh int, kodop int)

insert into t
select 1, 17, 5
union
select 2, 17, 4
union
select 3, 15, 25
union
select 5, 17, 82
union
select 6, 15, 48

должно получится

nop koduh op номер нужный
1, 17, 5 1
2, 17, 4 1
3, 15, 25 2
5, 17, 82 3
6, 15, 48 4
5 сен 18, 16:27    [21665978]     Ответить | Цитировать Сообщить модератору
 Re: Нумерация  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1467
Васелина,

STFF start_of_group
5 сен 18, 17:25    [21666039]     Ответить | Цитировать Сообщить модератору
 Re: Нумерация  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1467
Васелина,

и, кстати, не далее, чем по весне вы задавали ровно такой же вопрос. более того, мною же вам и был дан правильный (с ваших слов) ответ ;)
5 сен 18, 17:43    [21666061]     Ответить | Цитировать Сообщить модератору
 Re: Нумерация  [new]
Васелина
Member

Откуда:
Сообщений: 42
Щукина Анна, Ваш ответ :
"select nop,koduch , row_number() over(order by nop) - row_number() over(partition by koduch order by nop) as x_group_id
from zar order by nop"
выдает неправильный результат:

nop koduch x_group_id
1 17 0
2 17 0
3 15 2
5 17 1
6 15 3

3 и 5 операции.
6 сен 18, 08:27    [21666524]     Ответить | Цитировать Сообщить модератору
 Re: Нумерация  [new]
Посетитель
Member

Откуда:
Сообщений: 1209
Васелина
Щукина Анна, Ваш ответ :
"select nop,koduch , row_number() over(order by nop) - row_number() over(partition by koduch order by nop) as x_group_id
from zar order by nop"
выдает неправильный результат:

nop koduch x_group_id
1 17 0
2 17 0
3 15 2
5 17 1
6 15 3

3 и 5 операции.

Васелина, всё потому что стоило для начала понять, в чем суть предложенного решения, а потом уже браться его дорабатывать.
select nop,koduch,kodop,dense_rank()over(order by mnp) r 
  from (select *, min(nop)over(partition by koduch,x_group_id)mnp
          from (select nop,koduch,kodop,row_number() over(order by nop) - row_number() over(partition by koduch order by nop) as x_group_id
                  from #t
               )x
       )y
 order by nop
6 сен 18, 08:49    [21666543]     Ответить | Цитировать Сообщить модератору
 Re: Нумерация  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1467
Васелина,

тогда - изучаем предложенный выше поиск...

+ или если лениво, сразу смотрим результат :)
with t ( nop, koduch, kodop) as(
select 1,	17, 5
union 
select 2,	17, 4
union 
select	3,	15, 25	
union 
select	5,	17, 82	
union 
select	6,	15, 48
)

select nop, koduch, kodop, sum(start_of_group) over(order by nop) as xRank
  from (
         select nop, koduch, kodop, case koduch when lag(koduch) over(order by nop) then 0 else 1 end as start_of_group
           from t
       ) v
 order by nop
6 сен 18, 09:05    [21666551]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить