반응형
PostgreSQL GROUP_CONCAT에 해당합니까?
테이블이 있고 필드 값이 연결된 id 당 하나의 행을 가져오고 싶습니다.
예를 들어 내 테이블에는 다음이 있습니다.
TM67 | 4 | 32556
TM67 | 9 | 98200
TM67 | 72 | 22300
TM99 | 2 | 23009
TM99 | 3 | 11200
그리고 나는 출력하고 싶습니다 :
TM67 | 4,9,72 | 32556,98200,22300
TM99 | 2,3 | 23009,11200
MySQL에서는 집계 함수를 사용할 수 GROUP_CONCAT
있었지만 여기서는 작동하지 않는 것 같습니다 ... PostgreSQL과 동등한 기능이 있습니까?
이것은 아마도 좋은 출발점이 될 것입니다 (버전 8.4 이상) :
SELECT id_field, array_agg(value_field1), array_agg(value_field2)
FROM data_table
GROUP BY id_field
array_agg 는 배열을 반환하지만 필요에 따라 텍스트를 작성하고 편집 할 수 있습니다 (아래 설명 참조).
버전 8.4 이전에는 사용하기 전에 직접 정의해야합니다.
CREATE AGGREGATE array_agg (anyelement)
(
sfunc = array_append,
stype = anyarray,
initcond = '{}'
);
(PostgreSQL 문서에서 그린)
설명 :
- 배열을 텍스트로 캐스트 한 결과는 결과 문자열이 중괄호로 시작하고 끝나는 것입니다. 이러한 괄호는 원하지 않는 경우 일부 방법으로 제거해야합니다.
- ANYARRAY를 TEXT로 캐스팅하면 포함 된 쉼표가 포함 된 요소가 출력에서 표준 CSV 스타일로 이중 인용되므로 CSV 출력을 가장 잘 시뮬레이션합니다. array_to_string () 또는 string_agg () (9.1에 추가 된 "group_concat"함수)는 쉼표가 포함 된 문자열을 인용하지 않으므로 결과 목록에 잘못된 수의 요소가 생성됩니다.
- 새로운 9.1 string_agg () 함수는 먼저 내부 결과를 TEXT로 캐스트하지 않습니다. 따라서 value_field가 정수인 경우 "string_agg (value_field)"는 오류를 생성합니다. "string_agg (value_field :: text)"가 필요합니다. array_agg () 메소드는 집계 후 값당 캐스트가 아닌 하나의 캐스트 만 필요합니다.
9.0 이후 로 훨씬 더 쉽습니다.
SELECT id,
string_agg(some_column, ',')
FROM the_table
GROUP BY id
SELECT array_to_string(array(SELECT a FROM b),', ');
그렇습니다.
이렇게 해보십시오 :
select field1, array_to_string(array_agg(field2), ',')
from table1
group by field1;
배열 유형 에서 작동하는 버전 :
select
array_to_string(
array(select distinct unnest(zip_codes) from table),
', '
);
postgresql에서 나의 sugestion
SELECT cpf || ';' || nome || ';' || telefone
FROM (
SELECT cpf
,nome
,STRING_AGG(CONCAT_WS( ';' , DDD_1, TELEFONE_1),';') AS telefone
FROM (
SELECT DISTINCT *
FROM temp_bd
ORDER BY cpf DESC ) AS y
GROUP BY 1,2 ) AS x
참고 URL : https://stackoverflow.com/questions/2560946/postgresql-group-concat-equivalent
반응형
'Programing' 카테고리의 다른 글
Visual Studio의 솔루션을 TFS에서 온라인으로 다시 가져 오려면 어떻게해야합니까? (0) | 2020.04.15 |
---|---|
Java Streams가 왜 일회용입니까? (0) | 2020.04.15 |
.NET을 사용하면 확장자가 아닌 파일 서명을 기반으로 파일의 MIME 유형을 찾는 방법 (0) | 2020.04.15 |
배열이 비어 있는지 확인 (0) | 2020.04.15 |
활동간에 데이터를 공유하는 가장 좋은 방법은 무엇입니까? (0) | 2020.04.15 |