Заполните значение в строках на основе второй таблицы - PullRequest
0 голосов
/ 25 апреля 2020
create table a (
    name char(10),
    addr int,
    salary money
)    

create table b (
    name char(10),
    addr int,
    salary money
)

insert into a values ('kesh', '2', '10')
insert into a values ('bis', '11', '30')
insert into a values ('kir', '13', '30')
insert into a values ('sss', '14', '30')

insert into b values ('kesh', '3', null)
insert into b values ('bis', '12', null)
insert into b values ('sss', '14', '30')
insert into b values ('maa', '16', '1000')

Мне нужен этот результат из таблицы выше. было бы здорово, если бы кто-нибудь помог мне с этим.

name       addr newSalary
bis         11  30.00
bis         12  30.00
kesh        2   10.00
kesh        3   10.00
kir         13  30.00
maa         16  1000.00
sss         14  30.00

1 Ответ

0 голосов
/ 25 апреля 2020

Для этого набора данных вы можете использовать union all и оконные функции:

select 
    name,
    addr,
    coalesce(salary, max(salary) over(partition by name)) new_salary
from (
    select name, addr, salary from a
    union all
    select name, addr, salary from b
) t

Это как-то предполагает, что name s уникальны в каждой таблице.

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