【问题标题】:Adding a calculated column while joining tables in Snowflake在雪花中加入表格时添加计算列
【发布时间】:2021-01-12 19:06:27
【问题描述】:

我有 4 个表 A、B、C 和 D,每个表 3 列

A-  aa, ab, ac

B-  ba, bb, bc

C-  ca, cb, cc

D-  da, db, dc 

我需要加入 4 个表并添加一个新的计算列 (aa + ab + ac)。我的查询是

SELECT A.aa, A.ab, A.ac, B.ba, B.bb, B.bc, C.ca, C.cb, C.cc, D.da, D.db, D.dc,(A.aa + A.ab + A.ac) AS total

FROM A 

LEFT JOIN B

ON A.aa = B.ba

LEFT JOIN C

ON A.ab = C.ca

LEFT JOIN D

ON A.aa = D.da;

表连接正常,但计算列对所有行返回 NULL。我哪里出错了,还有其他方法吗?

【问题讨论】:

  • 似乎有些 aa、ab、ac 是 NULL,因此 sum 为 NULL。也许在求和之前将ZEROIFNULL( ) 函数应用于每一列,以将缺失值视为零?
  • 你能分享一下加入前后数据的截图吗?
  • 谢谢。添加 ZEROIFNULL() 解决了这个问题。

标签: sql left-join snowflake-cloud-data-platform calculated-columns


【解决方案1】:

为了完整起见,将@Fred 的答案从评论移至答案:

似乎有些 aa、ab、ac 是 NULL,因此 sum 为 NULL。求和前对每一列应用ZEROIFNULL()函数,将缺失值视为零?

https://docs.snowflake.com/en/sql-reference/functions/zeroifnull.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2020-03-30
    相关资源
    最近更新 更多