반응형
저도 이거저거 찾아보다가 안것입니다.
결국에는 Database.sarang.net 에서 찾았습니다.

      SELECT card_code, card_name, ltrim(sys_connect_by_path ( noint_mon, ','), ',') noint_mon
      FROM (
           SELECT card_code, card_name, noint_mon,
                 row_number() over(PARTITION BY card_code ORDER BY noint_mon) rn,  --card_code 기준 row수
                  COUNT(*) over(PARTITION BY card_code) cnt  -- card_code 기준 갯수
             FROM (
               select card_code,card_name, noint_mon   -- 샘플
                   from dual
                )
            )
      )
      WHERE rn = cnt
      START WITH rn = 1
      CONNECT BY PRIOR rn = rn - 1
             AND PRIOR card_code = card_code

connect by 를 사용하여  key 에 맞는 row 수에 맞게 모두 값을 합치는 것입니다.

card_code || card_name || noint_mon
13 || 삼성 || 4
13 || 삼성 || 5
13 || 삼성 || 9
20 || 현대 || 3
20 || 현대 || 6
20 || 현대 || 12

데이터가 이렇다면 위의 쿼리 결과는

card_code || card_name || noint_mon
13 || 삼성 || 4,5,9
20 || 현대 || 3,6,12

이렇게 결과가 나옵니다.

기존에는

max 또는 sum 의 decode 를 이용하여 열을 모두 열거하여 처리하는것이 었죠!!

위의것이 좀더 간편할듯 합니다.
위의 쿼리는 결과key 의 갯수 또는 집합 key의 갯수를 모를때 사용할 수가 있겠죠?



'IT가' 카테고리의 다른 글

log4j, JEUS5 logging 관련 정보.  (867) 2009.06.30
Oracle RAC Load Balance.  (0) 2009.06.05
with clause - 9i 기능.  (0) 2009.05.26
Posted by 상피리꿈

반응형
블로그 이미지
상피리꿈
Yesterday
Today
Total

달력

 « |  » 2024.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

최근에 올라온 글

최근에 달린 댓글

글 보관함