我有两张桌子:
Cust Sales Week
123 4 1/8/2015
123 3 1/22/2015
234 4 1/1/2015
Week
1/1/2015
1/8/2015
1/15/2015
1/22/2015
我希望将它们组合起来,以便每个Cust都有每个日期,没有销售的地方就是0。
Cust Sales Week
123 4 1/1/2015
123 0 1/8/2015
123 0 1/15/2015
123 3 1/22/2015
234 4 1/1/2015
234 0 1/8/2015
234 0 1/15/2015
234 0 1/22/2015
有没有办法可以'选择不同的(Cust)'并以某种方式加入它们?
答案 0 :(得分:1)
首先,使用cross join
生成所需的行。然后使用left join
:
select c.cust, w.week, coalesce(t.sales, 0) as sales
from weeks w cross join
(select distinct cust from t) c left join
t
on t.cust = c.cust and t.week = w.week;
答案 1 :(得分:0)
您可以在日期表上left join
并使用销售列上的isnull
。在Netezza中使用等效的isnull
。
select t1.cust, isnull(t1.sales,0), t2.week
from daystable2 t2 left join salestable1 t1 on t1.week = t2.week
答案 2 :(得分:0)
我认为这会解决问题
SELECT week, cust, COALESCE(sales, 0)
FROM week_tbl a LEFT JOIN cust_table b
ON a.week = b.week