У меня есть данные ниже в Oracle
ITEM_CNT ID
0 1
1 1
2 1
3 1
0 2
2 2
3 2
0 3
1 3
2 3
3 3
4 3
, и я хочу данные в следующем формате. Обратите внимание, поскольку ITEM_CNT 0 берется идентификатором 1, следовательно, ID 2 должен занимать следующее доступное число, равное 2. Аналогично ITEM_CNT 1 берется идентификатором 3 и т. Д.
Обратите внимание, если item_cnt уже занят идентификатором он не может быть использован другим идентификатором. Также всегда выбирайте наименьшее значение ITEM_CNT.
ITEM_CNT ID
0 1
2 2
1 3
Кроме того, обратите внимание, что я попробовал следующее, но для каждой дополнительной строки мне нужно написать еще один рекурсивный код, и если кто-то может сделать приведенный ниже код рекурсивным, то это будет отлично
SELECT Min(m3.item_cnt) item_cnt,
m3.id id,
m3.item item
FROM my_fil_data m3
WHERE m3.item_cnt NOT IN (SELECT Min(m4.item_cnt)
FROM my_fil_data m4
WHERE m3.id > m4.id
AND m4.item_cnt NOT IN (SELECT
Min(m5.item_cnt)
FROM my_fil_data m5
WHERE m4.id > m5.id
AND m5.item_cnt
NOT IN
(SELECT
Min(m6.item_cnt)
FROM my_fil_data m6
WHERE m5.id > m6.id
GROUP BY m6.id)
GROUP BY m5.id)
GROUP BY m4.id)
GROUP BY id,
item