2011-11-22 5 views
1

내 Oracle 데이터베이스에서 다음 SQL 쿼리를 실행하면 :Oracle에서 MySQL의 GROUP_CONCAT과 유사한 작업을 수행하는 쿼리를 작성하는 방법은 무엇입니까?

NAME    | SERVICE 
--------------------|------------------- 
Baita De Mario  | WC 
Baita De Mario  | Kuchnia 
Baita De Mario  | Nocleg 
Bistro-Cafe   | Bar 
Bistro-Cafe   | Dyskoteka 
Bistro-Cafe   | Kuchnia 

가 어떻게 다음과 같은 출력을 얻을에 대한 갈 것 : 나는 다음과 같은 출력을 얻을

SELECT p.pkt_nazwa, 
     u.us_nazwa 
FROM punkty p, 
     kategorie_uslug ku, 
     usluga u 
WHERE ku.pkt_id = p.pktk_1_id 
     AND ku.us_id = u.usk_1_id 
ORDER BY p.pkt_nazwa; 

를?

NAME    | SERVICES 
--------------------|------------------- 
Baita De Mario  | WC, Kuchnia, Nocleg 
Bistro-Cafe   | Bar, Dyskoteka, Kuchnia 
+0

@JNK를 사용하게하고 영업 이익은 거의 연구를했다. 그러나 나는 매우 좋은 질문이라고 생각했다. (그것은 SQL Server와 MySQL의 일반적인 질문이지만 오라클에서는 결코 보지 못했다.) 그래서 나는보기 흉하지 않은 질문처럼 보였다. –

+0

@ 애드 리안 - 노력을 기울여 주셔서 감사합니다 – JNK

답변

3
SELECT p.pkt_nazwa AS name, wm_concat(u.us_nazwa) AS services 
FROM punkty p 
JOIN kategorie_uslug ku ON ku.pkt_id = p.pktk_1_id 
JOIN usluga u ON u.usk_1_id = ku.us_id 
GROUP BY p.pkt_nazwa 
ORDER BY p.pkt_nazwa; 

wm_concat() 함수는 대부분의 버전으로 존재한다.
More about string aggregating in Oracle. 당신이 11g 릴리스 2를 실행하는 경우 다음 LISTAGG가 갈 수있는 방법이라고

http://www.oracle-base.com/articles/misc/StringAggregationTechniques.php

참고 :

+0

대단히 감사합니다! – makbol

+0

wm_concat이 문서화되지 않았습니다. –

3

다음은 오라클에서 일을하려고하는지 몇 가지 방법을 설명하는 기사입니다.

+0

감사합니다. 내가 게시하는 동안 실제로 편집했습니다. :) – Shaun

+0

+1이 링크를 공유하기 위해 –

0

오라클 11.2 이후이 쉽게 원래의 질문이 매우 잘못 작성된 된 listagg()

SELECT p.pkt_nazwa AS name, 
     listagg(u.us_nazwa) WITHIN GROUP (ORDER BY u.us_nazwa) AS services 
FROM punkty p 
    JOIN kategorie_uslug ku ON ku.pkt_id = p.pktk_1_id 
    JOIN usluga u ON u.usk_1_id = ku.us_id 
GROUP BY p.pkt_nazwa 
ORDER BY p.pkt_nazwa; 
관련 문제