2016-04-01 22 views
0

Postgresql'de eğlenceli bir sorunum var.postgresql içinde boş satırlar seçin

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; 

Sonuç: Beklenen

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

(0 sıra).

Gerçek: (1 satır).

Boş satırlar almak istemiyorum. Bu vaka için doğru sonuçları nasıl alabilirim. Teşekkürler.

+0

sorgu ** daima ** boş bir satır döndürür. Eğer bunu istemiyorsan, o zaman neden 'limit 0' kullanıyorsun? Sorgu hiçbir anlam ifade etmiyor –

+0

Sorgum için sonuçlar, ** sum ** kullanarak bazı boş satırlar var demektir. Sorgulamanın üzerinde, bu sorunu yeniden üretecek bir durum var. Yukarıdaki sorgu için beklenen –

+0

, 1 satır değil, 0 satırdır. –

cevap

1

Sen boş değerler filtrelemek için bir having maddesini kullanabilirsiniz: `sınır 0` "Hiç hiçbir satır" anlamına çünkü

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

Yardımlarınız için teşekkür ederiz. Bu maddeyi kullanıyorum, ama umarım bazı yollar daha iyidir, çünkü seçtiğim 20+ toplam maddeye sahibim ve sahip olduğum için 20+ seçeneğim var. –

+0

@ ThịnhNguyễnThái: Sorunuzda bu önemli bilgileri içermelisiniz. Bir cevap aldıktan sonra soruyu genişletmek hoş değil –

+0

Evet, kaydettim. Çok teşekkür ederim! –