【发布时间】:2017-09-11 07:07:03
【问题描述】:
PG_VERSION:9.2
我有一个带有多个布尔标志的表。
例如:
id,flag1,flag2,flag3
问题是,我想获取这些标志的 json 数组,其计数如下:
[{"title":"flag1","count":2},{"title":"flag2","count":3},{"title":"flag3","count":0}]
如何达到这个结果?试过这个
create or REPLACE function count_test(OUT json_string text) returns text
LANGUAGE plpgsql AS $$
BEGIN SELECT array_to_json(array_agg(rows))into json_string FROM ( select sum(case when flag1 then 1 else 0 end) as flag1,
sum(case when flag2 then 1 else 0 end) as flag2,
sum(case when flag3 then 1 else 0 end) as flag3 FROM flags
) rows;
END;
$$;
但是有了这个我只能得到
[{"flag1":2,"flag2":2,"flag3":0}]
等待立即响应。
【问题讨论】:
-
而不是大小写我宁愿投
flag1::int?..所以sum(flag1::int)看起来更具可读性
标签: sql json postgresql plpgsql postgresql-9.2