Oracle har ikke en funktion som MySQL's GROUP_CONCAT, hvilket er præcis den funktionalitet du efterspørger. Forskellige muligheder for en sådan strengsammenlægning findes på denne side - den ene er at bruge en brugerdefineret 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;
Så ville du bruge det som:
SELECT get_subjectkey(?) AS subject_key
FROM DUAL
...erstatter "?" med den primære nøgleværdi.
Tidligere
Hvis du blot vil tilføje et komma til slutningen af kolonneværdien, skal du bruge:
SELECT DISTINCT TO_CHAR(subject_key) || ','
FROM MYTABLE
Dobbeltrøret -- "||" -- er Oracle [,PostgreSQL og nu ANSI] midlet til at sammenkæde strenge i SQL. Jeg brugte TO_CHAR til eksplicit at konvertere datatypen, men du kunne bruge:
SELECT DISTINCT subject_key || ','
FROM MYTABLE
...hvis det ikke er nødvendigt.