2013-11-11 3 views
1

У меня есть таблица, какДобавьте столбец, который увеличивает, когда другой столбец изменяется

id status other columns 
-- ------ ------------- 
1 f 
2 f 
3 t 
4 t 
5 t 
6 f 

Теперь, когда я выбираю таблицу я тусклый, чтобы добавить конкретный столбец и проверить, когда состояние изменилось. Результат должен быть примерно таким:

id status other columns status_index 
-- ------ ------------- ------------ 
1 f       1 
2 f       1 
3 t       2 
4 t       2 
5 t       2 
6 f       3 

Запрос должен быть для postgres.

+2

Что вы пытаетесь до сих пор? Вопрос для меня непонятен. –

+0

Вопрос довольно интересный, но в следующий раз добавьте более точный заголовок. – skalee

ответ

2
with cte as (
    select 
     *, 
     row_number() over(order by id) as rn1, 
     row_number() over(partition by status order by id) as rn2 
    from Table1 
) 
select 
    id, status, 
    dense_rank() over(order by rn1 - rn2) as status_index 
from cte 
order by id 

sql fiddle demo

+0

Thnx Roman Pekar, ваш ответ мне помог. – user2979180

Смежные вопросы