반응형

오라클에서 데이터를 한줄로 가져오는 예제와 LISTAGG 한글 깨짐현상에 대해서 포스팅하겠습니다.


여러행을 한줄로 구분자를 줘서 하나의 컬럼으로 가져오는 예제로 LISTAGG 함수를 사용합니다.



*사용예제는 아래와 같이 사용하시면 되고, 기호에 맞게 변경하셔서 쓰시면 됩니다. 



SELECT 

    LISTAGG(컬럼, 구분자) WITHIN GROUP (ORDER BY 정렬할 컬럼) AS 바꿀 컬럼명 

 FROM 

    테이블 

WHERE 

    조건문




*아래는 예제를 위한 예제테이블을 만들었습니다.



SELECT 

    * 

FROM 

    (

        select 'A' as 영어, '1' as 정보 from dual

        union all

        select 'B' as 영어, '2' as 정보 from dual

        union all

        select 'C' as 영어, '1' as 정보 from dual

        union all

        select 'D' as 영어, '1' as 정보 from dual

    )



결과는 아래와 같습니다.







*이제 위 테이블을 가지고 데이터를 한줄로 가져오겠습니다.

 - 영어컬럼을 한줄로 가져올 예정입니다.

 - 정보가 1인 것을 조건으로 주겠습니다.

 - 구분자는 , (콤마) 로 사용하겠습니다.


SELECT 

    LISTAGG(a.영어, ',') WITHIN GROUP (ORDER BY a.영어) AS 영어정보

 FROM 

      (

        select 'A' as 영어, '1' as 정보 from dual

        union all

        select 'B' as 영어, '2' as 정보 from dual

        union all

        select 'C' as 영어, '1' as 정보 from dual

        union all

        select 'D' as 영어, '1' as 정보 from dual

    ) a

WHERE 정보 = '1'



위의 쿼리를 실행하면 아래와 같이

 - 조건인 정보가 '1'인 영어 컬럼의 데이터를 한줄로 뽑아냈습니다.



------------------------------------------------------------------------------------------------------


LISTAGG 한글 깨짐현상


LISTAGG를 사용해서 컬럼을 가져왔는데 한글이깨지는 경우는 컬럼 타입이 NVARCHAR 일 경우 그러는 것 같습니다.

NVARCHAR 타입을 VARCHAR로 데이터 타입 변환 함수인 CAST를 사용하여 변환해주세요.


CAST ( 컬럼 AS VARCHAR(50) ) AS 컬럼명


위와 같은 형식으로 사용하면 됩니다.


------------------------------------------------------------------------------------------------------


오라클에서 데이터를 한줄로 가져오기 및 LISTAGG 한글 깨짐현상에 대해 알아봤습니다.


감사합니다.








반응형

+ Recent posts