반응형
Oracle에서 여러 행 연결 및 그룹화
다음과 같은 테이블이 있다고 가정합니다.
NAME GROUP_NAME
name1 groupA
name2 groupB
name5 groupC
name4 groupA
name3 groupC
다음과 같은 결과를 얻고 싶습니다.
GROUP_NAME NAMES
groupA name1,name4
groupB name2
groupC name3,name5
테이블에 열이 하나밖에 없으면 다음을 수행하여 레코드를 연결할 수 있지만, 컨텍스트에서의 그룹화는 정말 잘 모르겠습니다.
하나의 열 테이블 연결:
SELECT names
FROM (SELECT SYS_CONNECT_BY_PATH(names,' ') names, level
FROM name_table
START WITH names = (SELECT names FROM name_table WHERE rownum = 1)
CONNECT BY PRIOR names < names
ORDER BY level DESC)
WHERE rownum = 1
갱신일 :
이제 다음을 사용하여 해결 방법이 있습니다.LISTAGG
:
SELECT
group_name,
LISTAGG(name, ', ')
WITHIN GROUP (ORDER BY GROUP) "names"
FROM name_table
GROUP BY group_name
여전히 다음과 같은 경우에 대해 보다 "일반적인" 솔루션에 관심이 있습니다.LISTAGG
사용할 수 없습니다.
11g인 경우 LISTAGG 기능을 사용하는 것을 고려하십시오.
select grp, listagg(name,',') within group( order by name )
from name_table group by grp
update: 그렇지 않은 경우 분석을 사용해 보십시오.
select grp,
ltrim(max(sys_connect_by_path
(name, ',' )), ',')
scbp
from (select name, grp,
row_number() over
(partition by grp
order by name) rn
from tab
)
start with rn = 1
connect by prior rn = rn-1
and prior grp = grp
group by grp
order by grp
언급URL : https://stackoverflow.com/questions/12558509/concatenate-and-group-multiple-rows-in-oracle
반응형
'programing' 카테고리의 다른 글
에서 클래스를 추가하는 방법에서 클래스를 추가하는 방법Wordpress에서 wp_nav_menu()를 사용하고 있습니까? (0) | 2023.03.29 |
---|---|
Twitter Bootstrap Navbar with AngularJS - 접기가 기능하지 않음 (0) | 2023.03.29 |
mongod, mac os x - 제한 경고 (0) | 2023.03.29 |
절대 경로 또는 상대 경로와 함께 컬 요청으로 json 파일 전송 (0) | 2023.03.29 |
webpack-dev-server 'webpack' 모듈을 찾을 수 없습니다. (0) | 2023.03.19 |