vertica: установить номер строки в значении столбцов

Проблема: установить номер строки в значении столбцов в Vertica.

Например:

Table T has two columns: Id, name

Я хочу использовать скрипт для добавления номера строки в значение имени. В mySQl я запускаю следующий скрипт для обновления:

set @i=0;
update T set name = (CONCAT(name, (@i:=@i+1)));

Однако Vertica не поддерживает переменные.

Не могли бы вы указать способ достижения цели?


person Edmund    schedule 26.06.2013    source источник
comment
Я не думаю, что Vertica поддерживает rownum или rowid.   -  person Amit Verma    schedule 27.06.2013


Ответы (1)


Поскольку Vertica поддерживает оконные функции, для получения этих данных можно использовать что-то вроде этого:

select name, 
       row_number() over (order by name) as rn
from T;

Я не уверен, как это можно переместить в оператор UPDATE, хотя у меня нет доступной установки vertica:

update T
  set name = name || tx.rn
from (
   select id, 
          row_number() over (order by name) as rn
   from T
) as tx
where tx.id = t.id;

Я не знаю, квалифицируется ли это как «самосоединение», которое не разрешено. Но, возможно, это укажет вам правильное направление.

person a_horse_with_no_name    schedule 26.06.2013
comment
Все должно быть в порядке. Большое спасибо. - person Edmund; 27.06.2013