При создании нового столбца с использованием раздела я получаю? в новых столбцах данных - PullRequest
0 голосов
/ 24 января 2020

У меня есть две таблицы exam_table и emp_table. Здесь я хотел бы объединить обе таблицы, используя левое внешнее соединение, и я хочу создать новый столбец с именем new_column, используя столбец exam_completed_date из правой таблицы

select id, exam_completed_date from exam_table;
id exam_completed_date 
0  12-01-2019
1  12-12-2019
select id, week_end_date from emp_table where id=0;
id week_end_date
0  11-29-2019
0  11-30-2019
0  12-31-2019
0  12-01-2019
0  12-02-2019
0  12-03-2019
0  12-04-2019

, когда я объединение двух таблиц с использованием левого внешнего соединения я получаю? в данных, как показано ниже,

select id, week_end_date, exam_completed_date ,
max(exam_completed_date) over (partition by id order by week_end_date) as newcolumn
from emp_table emp left outer join 
     exam_table exam 
     on (exam.id=emp.id and exam.exam_completed_date=emp.week_end_date)
where id=0
id week_end_date exam_completed_date  new_column
0  11-29-2019          ?                  ?
0  11-30-2019          ?                  ?
0  12-31-2019          ?                  ?
0  12-01-2019     12-01-2019           12-01-2019
0  12-02-2019          ?               12-01-2019
0  12-03-2019          ?               12-01-2019 
0  12-04-2019          ?               12-01-2019  

Как я могу go об исключении ? и замене на ноль?

1 Ответ

2 голосов
/ 24 января 2020

Вы используете оконную функцию и которая никогда не возвращает ?, если вы не укажете, вы, вероятно, получите null значения, поэтому вы можете заменить на coalesce():

coalesce(max(exam_completed_date) over (partition by id order by week_end_date), '')
...