Sql 用缺少的列值填充postgres表行

Sql 用缺少的列值填充postgres表行,sql,database,postgresql,Sql,Database,Postgresql,我有一个如下的PostgreSQL表: 表1: 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

我有一个如下的PostgreSQL表:

表1:

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
DATE
01/01/2018 
01/02/2018 
01/03/2018 
01/04/2018 
01/05/2018
我有另一张桌子,像:

表2:

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
DATE
01/01/2018 
01/02/2018 
01/03/2018 
01/04/2018 
01/05/2018
我试图将这两个表连接起来,以便表1中的每个“市场”都应该具有表2中的所有日期范围。如果表1中没有“日期”,则其相应的“值”列应为零

输出应为:

    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

对博士后来说还是很新鲜的。任何帮助都将不胜感激

对于此类问题,使用
交叉联接生成行。使用另一种机制(
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;

请删除mysql和oracle的标签。很明显,您没有使用这些产品。