У меня есть следующие данные в 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, поэтому идентификатор 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
ID
2 не получаетITEM_CNT
1? И почемуID
3 получает 2 значенияITEM_CNT
? - person Nick   schedule 08.04.2020