2016-02-02 3 views
0

Доброе утро, надеюсь, вы в порядке.приращение колонки один столбец, когда другие изменения

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

------------------------------------------- 
|time     |routeName|RouteID| 
------------------------------------------- 
|2015-12-01 00:54:01.000|routeA |1  | 
|2015-12-01 00:54:38.000|routeA |1  | 
|2015-12-01 00:56:18.000|routeA |1  | 
|2015-12-01 00:57:13.000|routeB |2  | 
|2015-12-01 00:57:43.000|routeB |2  | 
|2015-12-01 00:58:18.000|routeC |3  | 
|2015-12-01 00:59:06.000|routeA |4  | 
------------------------------------------- 

любая помощь с этим было бы весьма признателен

+0

Если 'RouteID' предназначается, чтобы быть динамический столбец, где значения увеличивают, то вам понадобится другой столбец в вашей таблице, который поможет упорядочить данные. – Raj

+0

Я вижу, у источника есть временный столбец, который я могу использовать для заказа, – natcon93

+0

. Измените свой вопрос и добавьте, что 'column' с образцами данных – Raj

ответ

0

Try как это,

DECLARE @table TABLE 
    (
    routeName VARCHAR(10) 
) 

insert into @table values 
('routeA'), 
('routeA'), 
('routeA'), 
('routeB'), 
('routeB'), 
('routeC'), 
('routeA') 

SELECT routename, 
     Dense_rank() 
     OVER (
      ORDER BY routename) AS routeid 
FROM @table 
+0

Привет, Спасибо за ответ. Я пробовал это решение, однако проблема заключается в том, что когда столбец возвращается к «routeA», идентификатор маршрута возвращается к 1 – natcon93

0
DECLARE @table TABLE 
(
    id int, 
    routeName VARCHAR(10) 
) 

insert into @table values 
(1,'routeA'), 
(2,'routeA'), 
(3,'routeA'), 
(4,'routeB'), 
(5,'routeB'), 
(6,'routeC'), 
(7,'routeA') 

SELECT 
    t.id, 
    t.routename, 
    SUM(flag) OVER(ORDER BY t.id) 
FROM 
(
    SELECT 
     a.id, 
     a.routeName, 
     IIF(a.routeName = b.routeName, 0, 1) as flag 
    FROM @table as a 
    LEFT OUTER JOIN @table as b on a.id = b.id + 1 
) as t 
Смежные вопросы