이 문서에서는 다양한 SQL 데이터베이스를 사용하여 여러 문자열 값을 단일 문자열로 연결하는 방법을 보여줍니다. 목표는 문자열 필드를 집계하는 것입니다.
Oracle 및 DB2:
Oracle과 DB2 모두 내장 LISTAGG
기능을 제공합니다. 구문은 간단합니다.
<code class="language-sql">SELECT FieldA, LISTAGG(FieldB, ',') WITHIN GROUP (ORDER BY FieldB) AS FieldBs FROM TableName GROUP BY FieldA ORDER BY FieldA;</code>
PostgreSQL:
PostgreSQL은 STRING_AGG
함수를 활용합니다.
<code class="language-sql">SELECT FieldA, STRING_AGG(FieldB, ',') AS FieldBs FROM TableName GROUP BY FieldA ORDER BY FieldA;</code>
SQL 서버:
SQL Server 2017 이상 버전도 STRING_AGG
을 지원합니다. 이전 버전(2017년 이전)의 경우 STUFF
및 FOR XML PATH
을 사용하는 보다 복잡한 접근 방식이 필요합니다.
<code class="language-sql">WITH CTE_TableName AS ( SELECT FieldA, FieldB FROM TableName ) SELECT t0.FieldA, STUFF(( SELECT ',' + t1.FieldB FROM CTE_TableName t1 WHERE t1.FieldA = t0.FieldA ORDER BY t1.FieldB FOR XML PATH('') ), 1, LEN(','), '') AS FieldBs FROM CTE_TableName t0 GROUP BY t0.FieldA ORDER BY FieldA;</code>
SQLite:
SQLite의 GROUP_CONCAT
함수는 문자열 집계를 수행할 수 있습니다. 주문하려면 CTE 또는 하위 쿼리가 필요합니다.
주문 시:
<code class="language-sql">WITH CTE_TableName AS ( SELECT FieldA, FieldB FROM TableName ORDER BY FieldA, FieldB ) SELECT FieldA, GROUP_CONCAT(FieldB, ',') AS FieldBs FROM CTE_TableName GROUP BY FieldA ORDER BY FieldA;</code>
주문하지 않은 경우:
<code class="language-sql">SELECT FieldA, GROUP_CONCAT(FieldB, ',') AS FieldBs FROM TableName GROUP BY FieldA ORDER BY FieldA;</code>
위 내용은 다양한 SQL 데이터베이스는 문자열 집계(LISTAGG)를 어떻게 구현합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!