샘플 :
t=# create table s170 (location text, ltn int,lgn int);
CREATE TABLE
t=# insert into s170 values ('Banguluru',24,25),('Banguluru',24,26),('Hyderabad',22,27);
INSERT 0 3
쿼리
t=# with b as (
with a as (
select location, (select to_json(position) from (select ltn,lgn) as position) as position
from s170
)
select location,json_agg(position) as position
from a
group by location
)
select json_agg(b)
from b;
json_agg
----------------------------------------------------------------------------------
[{"location":"Hyderabad","position":[{"ltn":22,"lgn":27}]}, +
{"location":"Banguluru","position":[{"ltn":24,"lgn":25}, {"ltn":24,"lgn":26}]}]
(1 row)
또는 꽤에서 :
[
{
"location": "Hyderabad",
"position": [
{
"ltn": 22,
"lgn": 27
}
]
},
{
"location": "Banguluru",
"position": [
{
"ltn": 24,
"lgn": 25
},
{
"ltn": 24,
"lgn": 26
}
]
}
]
내가 한 CTE 랩 생략 쉽게 할 수 있으리라 생각하지만 코드 명확성을 위해 여기에있을 수 있도록
갱신 9.2에 대한 해야합니다.
t=# with b as (
with a as (
select location, (select row_to_json(position,true) from (select ltn,lgn) as position) as position
from s170
)
select location,string_agg(position::text,',') as position
from a
group by location
)
select string_agg(concat('{"location":"',location,'","position":[',position,']}'), ',')
from b;
string_agg
{"location":"Hyderabad","position":[{"ltn":22,
"lgn":27}]},{"location":"Banguluru","position":[{"ltn":24,
"lgn":25},{"ltn":24,
"lgn":26}]}
(1 row)
실제로 to_json json_agg이 내 포스트그레스에서 작동하지 않습니다. 9.2 – suresh
예 - 9.3에서 작동합니다. 원래 게시물에 버전을 지정 했어야합니다. –