반응형
SQL - GROUP BY 사용 시 여러 값 쉼표로 구분
다음과 같은 데이터가 있습니다.
CUSTOMER, CUSTOMER_ID, PRODUCT ABC INC 1 XYX ABC INC 1 ZZZ DEF CO 2 XYX DEF CO 2 ZZZ DEF CO 2 WWW GHI LLC 3 ZYX
데이터를 다음과 같이 만드는 쿼리를 작성하려고 합니다.
CUSTOMER, CUSTOMER_ID, PRODUCTS ABC INC 1 XYX, ZZZ DEF CO 2 XYX, ZZZ, WWW GHI LLC 3 ZYX
도움이 된다면 Oracle 10g을 사용합니다.MYSQL을 사용하여 작동할 수 있는 것을 보았지만, 일반 SQL 또는 ORACLE과 동등한 것이 필요합니다.저장 프로시저를 만들 수 있는 예도 보았지만, 현재 사용하고 있는 제품으로는 저장 프로시저를 사용할 수 없습니다.
MySQL을 사용할 경우 어떻게 작동합니까?
SELECT CUSTOMER,
CUSTOMER_ID,
GROUP_CONCAT( PRODUCT )
FROM MAGIC_TABLE
GROUP BY CUSTOMER, CUSTOMER_ID
감사해요.
LISTAGG는 이러한 상황에서 사용하기에 기능별로 가장 적합한 집계 그룹이라고 생각합니다.
SELECT CUSTOMER, CUSTOMER_ID,
LISTAGG(PRODUCT, ', ') WITHIN GROUP (ORDER BY PRODUCT)
FROM SOME_TABLE
GROUP BY CUSTOMER, CUSTOMER_ID
ORDER BY 1, 2
이 링크는 Oracle에서 이를 수행하는 여러 가지 방법의 예를 나타냅니다.데이터베이스에서 수행할 권한이 있는지 확인합니다.
Oracle 사용자 함수 'wm_concat'은 LISTAGG와 동일하게 작동하지만 기본적으로 구분 기호 ',' 또는 정렬 순서를 지정할 수 없습니다.하지만 10g과 호환됩니다.
나이젤 감사합니다.
SQL이 그렇게 우아하지는 않지만 PLSQL이나 TSQL이 아닌 SQL만 필요한 솔루션이 필요했기 때문에 다음과 같이 되었습니다.
SELECT CUSTOMER, CUSTOMER_ID, COUNT(PRODUCT) PROD_COUNT,
RTRIM(
XMLAGG( XMLELEMENT (C, PRODUCT || ',') ORDER BY PRODUCT
).EXTRACT ('//text()'), ','
) AS PRODUCTS FROM (
SELECT DISTINCT CUSTOMER, CUSTOMER_ID, PRODUCT
FROM MAGIC_TABLE
) GROUP BY CUSTOMER, CUSTOMER_ID ORDER BY 1 , 2
XML 기능이 정확히 어떤 기능을 하는지는 아직 확실하지 않지만, 필요할 때 자세히 알아보겠습니다.
언급URL : https://stackoverflow.com/questions/234532/sql-multiple-values-comma-separated-when-using-group-by
반응형
'programing' 카테고리의 다른 글
ASP.net 보다 Classic ASP의 이점이 있습니까? (0) | 2023.08.13 |
---|---|
PowerShell로 파일의 특정 줄을 인쇄하는 방법은 무엇입니까? (0) | 2023.08.13 |
서명된 Git 커밋을 확인하는 중입니까? (0) | 2023.08.08 |
GitHub은 페이지를 다시 로드하지 않고 URL을 어떻게 변경합니까? (0) | 2023.08.08 |
보기에서 호스팅 활동을 가져오는 방법은 무엇입니까? (0) | 2023.08.08 |