Sql 用缺少的列值填充postgres表行
我有一个如下的PostgreSQL表: 表1: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
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的标签。很明显,您没有使用这些产品。