поменять местами значение столбца 2 таблиц - PullRequest
0 голосов
/ 06 июня 2018

Привет, у меня есть 2 таблицы tab1 и tab2.Я хочу заменить id столбец tab1 на id столбец tab2.Могу ли я сделать это одним запросом select?

Ввод:

Tab1
id  name
101  AA
102  BB
102  CC

Tab2
id  Name
11   XX
12   YY
13   ZZ

Вывод должен быть

Tab1
id  Name
11   AA
12   BB
13   CC

Tab2
id  name
101  XX
102  YY
103  ZZ

Спасибо, Онкар

1 Ответ

0 голосов
/ 07 июня 2018

Вы уверены, что последняя строка Tab2 имеет значение 102, 'ZZ' или 103, 'ZZ' (т. Е. Id отличается и упорядочен).

Если это 103, 'ZZ', то работает следующий запрос:

select decode(sign(max(ascii(name))-77),-1, min(id), max(id)) id, name
  from
( 
select t1.id, t1.dr, t2.name from
(
  select id, dense_rank() over (order by id) dr from Tab1
  union all
  select id, dense_rank() over (order by id) dr from Tab2
) t1
 join
(
  select name, dense_rank() over (order by id) dr from Tab1
  union all
  select name, dense_rank() over (order by id) dr from Tab2
) t2 on ( t1.dr = t2.dr )
)
group by name;

Демонстрация SQL Fiddle

...