본문 바로가기
개발/DB

[DB] 한 컬럼에 여러개의 결과 표현하기

by 똘똘이박사 2021. 7. 28.

쿼리 결과가 여러 줄인 데이터가 있다.

그런데 그중 한 컬럼의 내용반 다르고, 다른 컬럼의 결과는 똑같다.

그래서 내용이 다른 그 한 컬럼의 내용을 한 번에 받고 싶다.

 

이럴때 사용 할 수 있는 방법이

  - oracle : LISTAGG(컬럼명 구분자) 

  - mysql : GROUP_CONCAT(컬럼명 SEPARATOR 구분자)

함수를 이용하는 것이다.

두 함수 모두 지정 가능한 문자, 기호 등을 구분자로 하여 여려 행의 내용을 한 컬럼에 표기해 준다.

 

oracle

SELECT
	USER_ID,
    LISTAGG(USER_TASK, ',') WITHIN GROUP (ORDER BY USER_ID) AS USER_TASK
FROM USER_TASK
WHERE
	....
GROUP BY USER_ID

묶어야할 대상은 USER_TASK 이지만 어떤 데이터를 기준으로 묶어야 할지 기준은 필요하다.

그 기준을 USER_ID로 정했다. 따라서 마지막에 USER_ID를 GROUP BY 로 묶어 줘야 한다는 것도 잊지 말아야 한다.

 

Mysql

SELECT
	GROUP_CONCAT(USER_TASK SEPARATOR ',') AS USER_TASK
FROM
	USER_TASK
WHERE
	....
반응형

'개발 > DB' 카테고리의 다른 글

[DB] WITH AS 문 사용하기  (0) 2021.07.28
DB2 에러 정리  (0) 2021.04.16