【发布时间】:2021-05-13 14:38:05
【问题描述】:
在 Teradata 16.20.53.29 中,当我按如下方式进行左连接和聚合时:
select
b.department,
sum(a.sales) as sales
from table1 a
left join table2 b
on b.product = a.product
where a.date_purchase >= '2018-01-01'
and a.date_purchase <= '2020-01-01'
and a.brand = 'ACME'
and a.quantity > 0
group by 1
order by 1
我希望包含 table1 中而不是 table2 中的缺失行,但它们没有。
输出:
但是,如果我像这样重组查询:
select
b.department,
sum(a.sales) as sales
from table1 a
left join table2 b
on b.product = a.product
and a.date_purchase >= '2018-01-01'
and a.date_purchase <= '2020-01-01'
and a.brand = 'ACME'
and a.quantity > 0
group by 1
order by 1
然后包含缺失的行。
输出:
这与我的预期相反,我希望第一个查询包含空值,而第二个查询有效地成为内部连接,从而排除空值。为什么会这样?
【问题讨论】:
-
您通过
b.department加入。没有匹配的时候你想要什么? -
第二个输出是我期待的输出/没有匹配时我想要的输出
-
。 .您所描述的内容看起来像是 Teradata 中的错误。
-
我真的怀疑这是一个错误,请从您的表格中发布示例数据。
-
由于数据很敏感,将不得不编写一个 reprex,稍后再做