Oracle har inte en funktion som MySQL:s GROUP_CONCAT, vilket är exakt den funktionalitet du efterfrågar. Olika alternativ för sådan strängaggregation finns på den här sidan - en är att använda en anpassad funktion:
CREATE OR REPLACE FUNCTION get_subjectkey (IN_PK IN MYTABLE.PRIMARY_KEY%TYPE)
RETURN VARCHAR2
IS
l_text VARCHAR2(32767) := NULL;
BEGIN
FOR cur_rec IN (SELECT subject_key
FROM MYTABLE
WHERE primary_key = IN_PK) LOOP
l_text := l_text || ',' || cur_rec.ename;
END LOOP;
RETURN LTRIM(l_text, ',');
END;
Då skulle du använda det som:
SELECT get_subjectkey(?) AS subject_key
FROM DUAL
...ersätter "?" med det primära nyckelvärdet.
Tidigare
Om du antar att du bara vill lägga till ett kommatecken i slutet av kolumnvärdet, använd:
SELECT DISTINCT TO_CHAR(subject_key) || ','
FROM MYTABLE
Dubbelröret -- "||" -- är Oracle [,PostgreSQL och nu ANSI] sättet att sammanfoga strängar i SQL. Jag använde TO_CHAR för att explicit konvertera datatypen, men du kan använda:
SELECT DISTINCT subject_key || ','
FROM MYTABLE
...om det inte är nödvändigt.