Oracle heeft geen functie zoals MySQL's GROUP_CONCAT, wat precies de functionaliteit is waar je om vraagt. Verschillende opties voor dergelijke stringaggregatie vindt u op deze pagina - een daarvan is om een aangepaste functie te gebruiken:
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;
Dan zou je het als volgt gebruiken:
SELECT get_subjectkey(?) AS subject_key
FROM DUAL
... het vervangen van de "?" met de waarde van de primaire sleutel.
Eerder
Ervan uitgaande dat u alleen een komma aan het einde van de kolomwaarde wilt toevoegen, gebruikt u:
SELECT DISTINCT TO_CHAR(subject_key) || ','
FROM MYTABLE
De dubbele pijp -- "||" -- is het Oracle [, PostgreSQL en nu ANSI] middel om strings in SQL samen te voegen. Ik heb TO_CHAR gebruikt om het gegevenstype expliciet te converteren, maar je zou kunnen gebruiken:
SELECT DISTINCT subject_key || ','
FROM MYTABLE
...als dat niet nodig is.