2016-04-01 9 views
0

私はpostgresqlで楽しい問題があります。postgresqlで空行を選択する

select sum(value1) as v1, 
    sum(value2) as v2, 
    sum(value3) as v3, 
    sum(value4) as v4, 
    sum(value5) as v5, 
    ... 
from (select * from test limit 0)x; 

結果:期待

v1 | v2 | v3 | v4 | v5 | ... 
-----+-----+-----+-----+-----+--... 
    |  |  |  |  | ... 
(1 row) 

:(0行目)。

真理値:(1行)。

空の行を取得したくありません。 このケースで正しい結果を得るにはどうすればよいですか?おかげさまで

+0

クエリは**常に** '制限は0 '「全く行」を意味していないので、空の行が返されます。だから、あなたがそれを望まないなら、なぜあなたは 'limit 0'を全く使っていませんか?クエリは意味がありません –

+0

私のクエリの結果には、** sum **を使用して空の行がいくつかあることを意味します。上のクエリはこの問題を再現する場合であり、ここで合計するものはありません。 –

+0

上記のクエリで予想されるのは1行ではなく0行です。 –

答えて

1

あなたはnull値をフィルタリングするhaving句を使用することができます。

select sum(id) 
from ( 
    select * 
    from test limit 0 
) x 
having sum(id) is not null; 
+0

ありがとうございます。 私はこの句を使用していますが、選択肢に20以上の句があるため、いくつかの方法が優れていることを願っています。 –

+0

@ThingunhNguyễnThái:重要な情報を質問に含める必要があります。あなたが答えを受け取った後に質問を広げてもいいのではない –

+0

はい、私は留意しました。 ありがとうございます! –

関連する問題