Db2 조인후 그룹한 한컬럼에 콤마로 구분하기 도와주시오 0 4 431

by 조봉기 [DB 기타] [2019.09.12 12:06:29]


A테이블

Cood   name

      1    한국  

      2     독일

      3      미국

 

테이블 b

Code  model

    1         현대

    1          기아

    1         삼성

    2         bmw

    2         bens

    3         ford

결과값 

아래처럼나오게하고싶네요 도와주세요

Name         model          code

한국       현대,기아,삼성       1

독일         bmw,bens          2

미국              ford               3

by 춘 [2019.09.12 12:31:02]
WITH T AS
(
    SELECT 1 CODE, '한국' NAME FROM DUAL
    UNION ALL
    SELECT 2, '독일' FROM DUAL
    UNION ALL
    SELECT 3, '미국' FROM DUAL
), U AS
(
    SELECT 1 CODE, '현대' MODEL FROM DUAL
    UNION ALL
    SELECT 1, '기아' FROM DUAL
    UNION ALL
    SELECT 1, '삼성' FROM DUAL
    UNION ALL
    SELECT 2, 'bmw' FROM DUAL
    UNION ALL
    SELECT 2, 'bens' FROM DUAL
    UNION ALL
    SELECT 3, 'ford' FROM DUAL
)
SELECT
    A.NAME
    , LISTAGG(B.MODEL, ',') WITHIN GROUP (ORDER BY B.MODEL) AS MODEL
    , B.CODE
FROM T A JOIN U B
  ON A.CODE = B.CODE
GROUP BY A.NAME, B.CODE
ORDER BY CODE
;

 


by 조봉기 [2019.09.12 12:54:16]

답변너무 감사드립니다만 ㅠㅠ

모델명은 제가 알수없고 추가로 늘어나고 빠지거하는것이라 저쿼리로는 적용을 할수없겠네요 ㅠㅠ


by 춘 [2019.09.12 17:11:47]

무슨 말씀인지 이해가 가질 않네요...

모델명은 알 수 없고, 추가로 늘어나고 빠진다는게?

혹시 WITH 절에 있는 TEMP 데이터를 말씀하시는건가요?

저건 위에서 제시해준 데이터 기준으로 TEMP 테이블 데이터 만들어서 한거고,

실질적으로 원하는 결과를 얻으시려면,

하위 SELECT 절의 T 와 U 의 테이블 정보만 바꿔주시면 원하는 데이터를

얻으실 수 있습니다.

 

SELECT
    A.NAME
    , LISTAGG(B.MODEL, ',') WITHIN GROUP (ORDER BY B.MODEL) AS MODEL
    , B.CODE
FROM T A JOIN U B -- 이 부분의 T 와 U 테이블을 사용 테이블명으로 바꿔주세요.
  ON A.CODE = B.CODE
GROUP BY A.NAME, B.CODE
ORDER BY CODE
;

 


by 조봉기 [2019.09.12 20:51:11]

아~~~ 네감사합니다 월요일출근이 기다려지네요 감사합니다~~

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입