在TeraData中,是否有一种简单的方法可以选择最少的几列(即创建一个计算列),同时忽略包含零和NULL的列?
答案 0 :(得分:2)
有LEAST
函数,但它不会忽略NULL,因此你必须应用一些额外的逻辑,比如
LEAST(COALESCE(NULLIF(col1,0), 999999)
,COALESCE(NULLIF(col2,0), 999999)
,COALESCE(NULLIF(col3,0), 999999))
对于99999
,您应使用高于任何现有值的值。
如果所有列都可能为NULL或零,则必须添加最终
NULLIF(LEAST(....), 99999)
在这种情况下返回NULL。
答案 1 :(得分:1)
好吧,您可以使用least()
:
select least(col1, col2, col3)
这对0
和NULL
来说很棘手。您没有指定列的类型,但您可以使用NULLIF()
和COALESCE()
作为正数值:
select least( coalesce(nullif(col1, 0), 999999999),
coalesce(nullif(col2, 0), 999999999),
coalesce(nullif(col2, 0), 999999999)
)
当然,如果所有值均为999999999
或0
,则会返回特殊值NULL
。