在 Snowflake 中连接表时添加计算列
Adding a calculated column while joining tables in Snowflake
我有 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;
表连接良好,但所有行的计算列 returns NULL。我哪里出错了,还有其他方法吗?
为了完整起见,将@Fred 的答案从评论移至答案:
Seems like some of aa, ab, ac are NULLs so sum is therefore NULL. Apply ZEROIFNULL()
function to each column before summing, to treat missing values as zero?
https://docs.snowflake.com/en/sql-reference/functions/zeroifnull.html
我有 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;
表连接良好,但所有行的计算列 returns NULL。我哪里出错了,还有其他方法吗?
为了完整起见,将@Fred 的答案从评论移至答案:
Seems like some of aa, ab, ac are NULLs so sum is therefore NULL. Apply
ZEROIFNULL()
function to each column before summing, to treat missing values as zero?
https://docs.snowflake.com/en/sql-reference/functions/zeroifnull.html