>데이터 베이스 >MySQL 튜토리얼 >그룹별로 DB2에서 쉼표로 구분된 목록을 생성하는 방법은 무엇입니까?

그룹별로 DB2에서 쉼표로 구분된 목록을 생성하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-09 14:41:43182검색

How to Generate Comma-Separated Lists in DB2 by Group?

LISTAGG를 사용하여 DB2에서 쉼표로 구분된 목록 생성

이 가이드에서는 DB2에서 다른 열로 그룹화된 열 값의 쉼표로 구분된 목록을 만드는 방법을 보여줍니다. 이를 달성하기 위해서는 LISTAGG 기능이 핵심입니다.

시나리오:

ID이 여러 개의 Role을 가질 수 있는 IDRoles 열이 있는 테이블을 상상해 보세요. 목표는 각 고유 ID에 대해 쉼표로 구분된 역할 목록을 출력하는 것입니다.

예시 데이터:

ID Role
4555 2
4555 3
4555 4

원하는 출력:

<code>4555, 2,3,4</code>

LISTAGG를 사용한 솔루션:

DB2의 LISTAGG 함수는 그룹 내의 값을 효율적으로 연결합니다. 구문은 다음과 같습니다.

<code class="language-sql">LISTAGG(column_name, delimiter) WITHIN GROUP (ORDER BY column_name) OVER (PARTITION BY group_column)</code>

예시 쿼리:

myTableid 열이 있는 category이라는 샘플 테이블을 사용해 보겠습니다.

<code class="language-sql">CREATE TABLE myTable (id INT, category INT);

INSERT INTO myTable VALUES (1, 1);
INSERT INTO myTable VALUES (2, 2);
INSERT INTO myTable VALUES (5, 1);
INSERT INTO myTable VALUES (3, 1);
INSERT INTO myTable VALUES (4, 2);</code>

id에 대해 쉼표로 구분된 category 값을 얻으려면:

<code class="language-sql">SELECT
  category,
  LISTAGG(id, ', ') WITHIN GROUP (ORDER BY id ASC) AS ids
FROM myTable
GROUP BY category;</code>

결과:

<code>CATEGORY | IDS
---------+-----
       1 | 1, 3, 5
       2 | 2, 4</code>

이 쿼리는 category을 기준으로 행을 그룹화하고, 각 그룹 내의 id 값을 정렬한 다음 LISTAGG을 사용하여 이를 하나의 쉼표로 구분된 문자열로 연결합니다. 결과에는 각 카테고리에 대한 쉼표로 구분된 ID 목록이 표시됩니다. 이 접근 방식은 DB2의 그룹화를 기반으로 쉼표로 구분된 목록을 생성하는 문제를 효과적으로 해결합니다.

위 내용은 그룹별로 DB2에서 쉼표로 구분된 목록을 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.