Полагаю, вы хотите выбрать все столбцы из table_abc
с именами из employee_xyz
.
Если вы попытаетесь использовать select abc.*, xyz.name
, вы уже можете выбрать две строки, поскольку sysdate
для person_id = 12 остается в интервале только для третьей строки ( start_date:04-mar2018 / end_date: 31-DEC-4712 ), но если вы хотите, чтобы не повторялись даже при сохранении большего количества значений даты, вы можете использовать другое: select distinct abc.*, xyz.name
, как показано ниже (, где есть две строки вдата окончания второй строки интервала, преобразованная из «2018-03-03» в «2019-03-03» ):
with table_abc(emp_id_role, Group_name, Role_name, Location_id) as
(
select 12,'Insurance','Manager','Noida' from dual union all
select 12,'Insurance','Senior Manager','Noida' from dual union all
select 13,'Global Client Services','Sw', 'UP' from dual union all
select 14,'Operations Management','All Jobs','kERALA' from dual
),
employee_xyz(person_id,name, dob, start_date, end_date, ssn) as
(
select 12,'DEAN',date'1990-01-01',date'2017-01-01',date'2017-01-20',847474 from dual union all
select 12,'DEAN',date'1990-01-01',date'2017-01-21',date'2019-03-03',847474 from dual union all
select 12,'DEAN',date'1990-01-01',date'2018-03-04',date'4712-12-31',847474 from dual
)
select distinct abc.*, xyz.name
from table_abc abc join employee_xyz xyz
on xyz.person_id = abc.emp_id_role
where trunc(sysdate) between xyz.Start_date and xyz.end_date
and person_id = 12;
EMP_ID_ROLE GROUP_NAME ROLE_NAME LOCATION_ID NAME
----------- ---------- --------------- ----------- -----
12 Insurance Manager Noida DEAN
12 Insurance Senior Manager Noida DEAN