问题描述
我有以下值:
table_1:
value
123
table_2:
value
456
select
t1.value as t1_value,t2.value as t2_value,coalesce(t1.value,t2.value,null) as coalesced_value
from
table_1 as t1
left join
table_2 as t2
on
t1.it_does_not_matter = t2.it_does_not_matter
Output:
t1_value t2_value coalesced_value
123 456 123.00000
为什么我最后有额外的 0 值?我如何做到这一点,所以我的输出是这样的:
Desired Output:
t1_value t2_value coalesced_value
123 456 123
解决方法
对于初学者来说,合并到 NULL 是没有意义的,除非你只是表明它是神奇的第三个值。
coalesce(t1.value,t2.value,null)
但在雪花中
WITH a as ( select 123::number a ),b as (select 456 as b)
SELECT a.a,b.b,coalesce(a.a,null)
FROM a LEFT JOIN b ON true;
给出:
A B COALESCE(A.A,B.B,NULL)
123 456 123
将第二个改为浮动
WITH a as ( select 123::number a ),b as (select 456.1 as b)
SELECT a.a,null)
FROM a LEFT JOIN b ON true;
给出:
A B COALESCE(A.A,NULL)
123 456.1 123.0
但将浮点数转换为双精度
WITH a as ( select 123::number a ),b as (select 456.1::double as b)
SELECT a.a,NULL)
123 456.1 123
所以我怀疑你的两个表的类型是什么..如果你希望它总是一个数字,只需进行合并即可。
coalesce(a.a,null)::number
如果您的数据是变体,而其他列是浮动的,因此它会将其全部视为浮动,但您只看到一行。