2013-08-25 3 views
2

У меня есть дата столбца, где даты сортируются в порядке возрастания, и есть много повторяющихся дат. В первом столбце у меня есть индекс, который должен быть увеличен на 1 при изменении даты.Как отслеживать изменения в одном столбце?

теперь выглядит следующим образом

столом

index  date 
--------------------- 
1  2001-03-01 
1  2001-03-01 
1  2001-03-01 
1  2001-04-01 
1  2001-04-01 
1  2001-04-01 
1  2001-05-01 

должен выглядеть как этот

Таблица A

index date 
----------------- 
1  2001-03-01 
1  2001-03-01 
1  2001-03-01 
2  2001-04-01 
2  2001-04-01 
2  2001-04-01 
3  2001-05-01 

спасибо за помощь

+0

Не похоже, что вы просите о помощи и попросите нас сделать от вашего имени. – Rahul

+0

Я спрашиваю хотя бы за подсказку – niydiyin

ответ

1

Для получения точного результата может быть использована аналитическая функция dense_rank(). Вот пример:

select dense_rank() over(order by date1) as index1 
    , date1 
    from tab_a 

Результат:

INDEX1  DATE1 
-------------------- 
1   2001-03-01 
1   2001-03-01 
1   2001-03-01 
2   2001-04-01 
2   2001-04-01 
2   2001-04-01 
3   2001-05-01 

SQLFiddle Demo

В качестве примечания. Старайтесь избегать использования зарезервированных слов, таких как date и index как имена столбцов.

+0

Спасибо! Только то, что я искал. Раньше не слышал об этой функции. – niydiyin

0

вы с использование CHANGETABLE для вашего случая.

Возвращает отслеживание изменений информации для table.You может использовать эту заявления, чтобы вернуть все изменения в таблицу или отслеживание изменений информации для конкретной строки.

+0

Проблема в том, что я использую t-sql и нет триггеров – niydiyin

+0

Тогда вы можете использовать опцию CHANGETABLE. Обновленный мой ответ хорошо !!!! –

+0

@niydiyin: - Надеюсь, это поможет вам как подсказку !!!! :) –

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