Не знаю, как это сделать, но я хочу добавить новый столбец "Джерси", который будет увеличиваться на 1 в зависимости от значения "Спорт" как в tab_A, так и в tab_B. Так что, если "tab" уже существует в tab_B, просто возьмите max jersey_no и добавьте 1 для нового столбца. Это легко.
Теперь, если "Sport" не существует в tab_B, тогда присвойте ему значение "Джерси" 100 для нового столбца. Однако, если в tab_A имеется более одного «Sport» (но не существует в tab_B), он должен начинаться со 100 и увеличиваться на 1 для следующего же Sport и т. Д. (Например, см. Пример Garcia ниже).
Я создал последовательность "seqnce", но это действительно не помогло. Есть ли другой способ сделать это? Заранее спасибо!
Tab_A
Name State Sport
Garcia CA Basketball
Garcia AL Basketball
Garcia NY Basketball
McGee CA Swimming
Tontou CA Football
Tontou AL Swimming
Tab_B
Name Sport Jersey_No
Garcia Swimming 100
Garcia Football 100
McGee Swimming 101
Tontou Swimming 101
Tontou Swimming 102
Ожидаемый результат
Name State Sport Jersey
Garcia CA Basketball 100
Garcia AL Basketball 101
Garcia NY Basketball 102
McGee CA Swimming 102
Tontou CA Football 100
Tontou AL Swimming 103
Мой код
select name, state, sport
,nvl ((select max(b.jersey_no + 1) from tab_b b
where b.sport = a.sport
and b.name = a.name),
(case
when not exists (select 1 from tab_b b
where b.sport = a.sport
and b.name = a.name
having count(a.sport) > 1)
then seqnce.nextval
else '100'
end )
) Jersey
from tab_a