Увеличение индекса столбца на основе другого значения столбца
Допустим, у меня есть таблица с 2 столбцами: один имеет различные даты (дата), а другой-значения с плавающей запятой (цена), включая нули. Чего я хочу добиться, так это добавить новый столбец (NON_ZERO_ID), который по существу имеет значение и увеличивается только в том случае, если цена не равна нулю. Вот желаемый результат:
ДАТА / ЦЕНА | NON_ZERO_ID
1/2/16| 0.12| 1
1/3/16|45.00| 2
1/4/16|нуль| нуль
1/5/16|40.00|3...
Что я уже пробовал:
Я пробовал использовать синтаксис row_number() over (order by..) для нумерации строк, но во всех случаях NON_ZERO_ID автоматически увеличивается, даже если есть нулевое значение для PRICE. Есть предложения? По сути, я хочу иметь возможность сделать NON_ZERO_ID с заранее заданной строкой, то есть ID1, ID2 и так далее.
barneyman
вы могли бы сделать это с помощью триггера на вставке
Почему вы пытаетесь сделать это таким образом, кажется (на первый взгляд) немного запутанным - что произойдет, если цена будет добавлена или удалена позже?
Добавление строк в rowids тоже плохая идея ... это должно быть сделано на уровне презентации-IMHO
Member 12189753
спасибо за предложение. Цена может быть добавлена или удалена позже, но для текущих целей мне нужно использовать идентификатор для соединения с другой справочной таблицей, которая дает ориентиры на основе цен и независимо от того, являются ли даты буднями или нет. По сути, мне нужно будет расширить логику здесь, чтобы обновить индикатор в зависимости от того, является ли это будний день или нет. И я понимаю вашу точку зрения на добавление строк к rowid. Возможно ли достичь решения без использования триггеров или вставок?