2017-07-21 8 views
1

私がこれで見つけることができ、それがうまくいかないスレッドのたびに、私が間違っているかもしれないことについていくつかの情報を得たいと思います。私はCoalesceを使用していくつかのint2フィールドを集約しています。すべてのフィールドに値がある場合にのみ値を取得します。どこにでもnull値がある場合(そしてそれは共通です)、集約全体の結果はnullです。 nullif()関数はNULLを0のような使用可能な値に置き換えることができますが、私が何をするにしても、エラーが発生するか、集約全体の結果として0が得られます。どんな助けにも感謝!集合関数を持つCOALESCEとNULLIF

ここでは、コードです:

SELECT 
"public".jam_fodder_productivity.cows, 
"public".jam_fodder_productivity.sheep, 
"public".jam_fodder_productivity.lamb, 
"public".jam_fodder_productivity.horse, 
"public".jam_fodder_productivity.ungneyti, 
COALESCE(jam_fodder_productivity.cows + (jam_fodder_productivity.ungneyti/2::double precision) + (jam_fodder_productivity.horse/2::double precision) + (jam_fodder_productivity.sheep/6::double precision) + (jam_fodder_productivity.lamb/12::double precision)) AS total_productivity 
FROM 
"public".jam_fodder_productivity 

クエリの結果は次のようになります。

coalesce result

答えて

0

あなたがそれぞれに

COALESCE(<expression>, 0) 

を適用する必要がありますが、和を構成する式。

式のいずれかがNULLの場合、合計はNULLになります。

ので、エントリーはお守り@LaurenzホテルAlbeのような

COALESCE(jam_fodder_productivity.cows, 0) 
+ COALESCE(jam_fodder_productivity.ungneyti/2::double precision, 0) 
+ COALESCE(jam_fodder_productivity.horse/2::double precision, 0) 
+ COALESCE(jam_fodder_productivity.sheep/6::double precision, 0) 
+ COALESCE(jam_fodder_productivity.lamb/12::double precision, 0) 
    AS total_productivity 
+0

作品のように計算されます!知識をありがとう。 – gislipals

関連する問題