Oracle SQL: 여러 행의 데이터를 하나의 행으로 병합
질문:
Oracle SQL은 테이블의 여러 데이터 행을 하나의 행으로 병합할 수 있나요?
지침:
다음과 같은 구조의 테이블이 있다고 가정해 보겠습니다.
<code>A 1 A 2 B 1 B 2</code>
목표는 다음 결과 집합을 얻는 것입니다.
<code>A 1 2 B 1 2</code>
해결책:
사용 중인 Oracle SQL 버전에 따라 다음 방법을 사용할 수 있습니다.
1. wm_concat() 함수(Oracle 12c 이하):
<code class="language-sql">SELECT field1, wm_concat(field2) FROM YourTable GROUP BY field1;</code>
(참고: wm_concat() 함수는 Oracle 12c에서 더 이상 사용되지 않습니다. 대신 LISTAGG를 사용하는 것이 좋습니다.)
2. 사용자 정의 문자열 집계:
wm_concat() 함수를 사용할 수 없는 경우 문자열 집계를 수행하는 사용자 정의 메서드를 구현할 수 있습니다. 자세한 지침을 보려면 oracle-base.com을 방문하세요.
3. LISTAGG 기능 사용(Oracle 11gR2 이상):
이는 최신 Oracle 버전에서 더 강력하고 지원되므로 권장되는 최신 접근 방식입니다.
<code class="language-sql">SELECT field1, LISTAGG(field2, ' ') WITHIN GROUP (ORDER BY field2) AS aggregated_field2 FROM YourTable GROUP BY field1;</code>
이 쿼리는 LISTAGG
함수를 사용하여 field2
의 값을 문자열로 연결하고 공백을 구분 기호로 사용하고 field2
값을 기준으로 정렬합니다. WITHIN GROUP (ORDER BY field2)
절은 결과 문자열의 값 순서를 보장합니다. GROUP BY field1
절은 field1
값에 따라 그룹화되어 여러 행을 하나의 행으로 병합합니다.
귀하의 Oracle 버전에 가장 적합한 솔루션을 선택하세요. Oracle 11gR2 이상에서는 LISTAGG
기능을 사용하는 것이 좋습니다.
위 내용은 Oracle SQL은 여러 행을 단일 행으로 집계할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!