> 데이터 베이스 > MySQL 튜토리얼 > Oracle SQL은 여러 행을 단일 행으로 집계할 수 있습니까?

Oracle SQL은 여러 행을 단일 행으로 집계할 수 있습니까?

Patricia Arquette
풀어 주다: 2025-01-15 18:47:47
원래의
886명이 탐색했습니다.

Can Oracle SQL Aggregate Multiple Rows into a Single Row?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿