2017-10-11 56 views
0

在TeraData中,是否有一種簡單的方法來選擇幾列中的最小值(即創建一個計算列),同時忽略包含零和NULL的列?最少幾列忽略零和零

回答

2

有一個LEAST功能,但它不會忽略NULL值,所以你需要用些額外的邏輯就像

LEAST(COALESCE(NULLIF(col1,0), 999999) 
    ,COALESCE(NULLIF(col2,0), 999999) 
    ,COALESCE(NULLIF(col3,0), 999999)) 

對於99999你應該使用比任何現有的值。 如果所有列可能是空或零,你必須添加一個最終

NULLIF(LEAST(....), 99999) 

在這種情況下,返回NULL。

+0

謝謝。剛學到最少。但它會不會返回零?例如:1 2 3 0 => 0 – cs0815

+0

當然,我忘了零,添加了'NULLIF' – dnoeth

+0

行。明天再試。 – cs0815

1

那麼,你可以排序的使用least()

select least(col1, col2, col3) 

這是棘手與0 S和NULL秒。你不指定類型的列,但您可以使用NULLIF()COALESCE()正數值:

select least(coalesce(nullif(col1, 0), 999999999), 
       coalesce(nullif(col2, 0), 999999999), 
       coalesce(nullif(col2, 0), 999999999) 
      ) 

當然,這將返回特殊值999999999如果所有值均爲0NULL