Соедините строки указанного c столбца таблицы-A с помощью таблицы-B, где значение столбца в таблице-A равно нулю - PullRequest
0 голосов
/ 26 мая 2020

Таблица-A

X
1
0
0
5
7
0
0

Таблица-B

X
1.2
5.1
8.9
22
24
99.8
15.5

Ожидаемый результат

 X
 1
 5.1
 8.9
 5
 7
 99.8
 15.5

Значения таблицы-B копируются в таблицу -A, где значения в таблице-A равны нулю

1 Ответ

0 голосов
/ 26 мая 2020

SQL таблица представляет неупорядоченные наборы строк. Для того, что вы хотите сделать, вам нужен столбец для упорядочивания в каждой из таблиц.

Предполагая, что они существуют и называются id, вы можете использовать row_number() для выравнивания строк в таблицах и выражение case для приоритизации:

select case when a.x = 0 then b.x else a.x end x
from (select row_number() over(order by id) rn, x from tablea) a
left join (select row_number() over(order by id) rn, x from tableb) b 
    on a.rn = b.rn
...