2017-12-29 13 views
0

行がない場合、関数array_agg()nullを返します。これを変更して行が返されないようにするにはどうすればよいですか?例えば、次のような単純なクエリ取る:入力行がない場合、array_agg()は行を返しません。

select array_agg(country) 
from country 
where false 

この値nullと一列を返します。返される行はありません。

答えて

2

空の配列を除去するHAVING句を使用:

[local] #= select array_agg(1) from a where false; 
┌───────────┐ 
│ array_agg │ 
├───────────┤ 
│ (null) │ 
└───────────┘ 
(1 row) 

[local] #= select array_agg(1) from a where false having array_agg(1) <> '{}'; 
┌───────────┐ 
│ array_agg │ 
├───────────┤ 
└───────────┘ 
(0 rows) 
関連する問題