Oracle & Column compress
creat table enumerated_table as select rownum id, symbol symbol from source_table
FROM
table t1
select rownum id, symbol from (select distinct symbol from table order by symbol asc t2
WHERE
t1.symbol = t2.symbol
Ты это имел ввиду?
Ты это имел ввиду?Думаю, да, спасибо.
1) rownum нельзя использовать на временных таблицах с order by, group by. Можно использовать rank.
2) NULL криво обрабатывается при такой схеме. Можно использовать NVL, но это вызывает по непонятной причине немерянные тормоза, либо можно добавить остаток с помощью UNION с соответствующим select.
SELECT nvl(t2.id,0 t1....
FROM
table t1
select rownum id, symbol from (select distinct symbol from table order by symbol asc t2
WHERE
t1.symbol = t2.symbol(+)
Это должно быть довольно быстро.
rank или dense_rank порулят скорее всего в этой задаче соединение.
Оставить комментарий
Papazyan
Подскажите, плиз, как в Oracle наиболее естественным путем можно данные из одного столбца за enumerate'ить и получить в результате из таблицы типа (symbol,...) две таблицы (id, symbol) и (id,....). Но базовую таблицу трогать нельзя. Нужно что бы не гонять по сети мегабайты. Поля большие, но уникальных значений не более 1% от всех записей. Прав в БД очень мало.