2017-09-12 22 views
1

array_aggを使用して作成された配列列を分割しようとしています。以下が厳しく削減され、元のクエリは、複数の列に私はARRAY_AGG(個別のitem.code ::テキスト)を分割する必要がある210行array_aggで作成された列を分割する方法

select 
distinct on (visitor.id) 
id, 
array_agg(distinct item.code::text) 

from 
8xfullouter joins 

where 
exists(
select 
distinct on(visitor.id) 
item.code::text 
from 
3 full outer join that all appear in the first query 

group by 
visit.id, 
item.code 

order by 
visit.id 
) 

のようなものです。私は( ''、ARRAY_AGG(個別のitem.code ::テキスト)、1)split_partを試してみましたが、次の

> [Err] ERROR: function split_part(character varying[], unknown, 
> integer) does not exist LINE 159: split_part (array_agg(distinct 
> "public".procedure_group_cpt_... 

感謝を受け取りました!

答えて

1

は例えば、配列のインデックスを使用します。:

また
select (array_agg(code::text))[1] 
from (values ('code1'), ('code2')) as codes(code) 

array_agg 
----------- 
code1 
(1 row) 

、あなたはstring_agg()代わりのarray_agg()、例えばを使用することができます。:

select split_part(string_agg(code::text, ','), ',', 1) 
from (values ('code1'), ('code2')) as codes(code) 

split_part 
------------ 
code1 
(1 row) 
+0

はあなたに感謝。インデックスメソッドは完全に機能しました。 –

関連する問題