Заполнить строки таблицы postgres пропущенными значениями столбцов - PullRequest
0 голосов
/ 08 июня 2018

У меня есть таблица PostgreSQL, подобная этой:

table1:

MARKET        character varying 10
COST1         Number

MARKET       DATE           VALUE
A            01/01/2018      10   
A            01/02/2018      45
A            01/04/2018      12 
B            01/01/2018      12
B            01/05/2018      12
B            01/04/2018      12

У меня есть другая таблица, такая как:

table2:

DATE
01/01/2018 
01/02/2018 
01/03/2018 
01/04/2018 
01/05/2018

Я пытаюсь объединить эти две таблицы так, чтобы у каждого "MARKET" из таблицы1 были все диапазоны дат в таблице2.Если «DATE» отсутствует в таблице 1, соответствующий ему столбец «VALUE» должен быть равен нулю.

OUTPUT должен быть:

    MARKET       DATE           VALUE
    A            01/01/2018      10   
    A            01/02/2018      45
    A            01/03/2018      0
    A            01/04/2018      12 
    A            01/05/2018      0
    B            01/01/2018      12
    B            01/02/2018      0
    B            01/03/2018      0
    B            01/04/2018      12
    B            01/05/2018      12

Все еще довольно плохо знаком с postgres.Любая помощь будет оценена!

1 Ответ

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

Для этого типа проблемы сгенерируйте строки с cross join.Используйте другой механизм (left join) для ввода значений.

select m.market, t2.date, coalesce(t1.value, 0) as value
from (select distinct market from t1) m cross join
     t2 left join
     t1
     on t1.market = m.market and t1.date = t2.date;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...