目前我有这个查询:
select
sum(case when my_table.property_type = 'FLAT' then my_table.price else 0 end) as Flat_Current_Asking_Price,
sum(case when my_table.property_type_mapped = 'SEMIDETACHED' then my_table.price else 0 end) as Semidetached_Current_Asking_Price
from
my_table;
所以如果my_table
有值:
property_type | price
--------------+-------
FLAT | 5000
SEMIDETACHED | 9000
FLAT | 6000
查询将返回:
Flat_Current_Asking_Price | Semidetached_Current_Asking_Price
--------------------------+-----------------------------------
11000 | 9000
如何替换sum
以将值累积到数组中以获取?
Flat_Current_Asking_Price | Semidetached_Current_Asking_Price
--------------------------+-----------------------------------
{5000, 6000} | {9000}
如果您的 PostggreSQL 版本是 9.4 或更高版本,请使用
FILTER
子句:如果您想拥有数组,请使用
array_agg
, 而不是SUM
:如果您想摆脱空值,请改用一个小技巧(array_to_string 摆脱它们):
dbfiddle在这里
附录
根据 Abelisto 的评论,您还可以使用
array_remove
:dbfiddle在这里