Oracle няма функция като GROUP_CONCAT на MySQL, което е точно функционалността, която искате. На тази страница са предоставени различни опции за такова агрегиране на низове - единият е да използвате персонализирана функция:
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;
Тогава ще го използвате като:
SELECT get_subjectkey(?) AS subject_key
FROM DUAL
...замяна на "?" със стойността на първичния ключ.
По-рано
Ако приемем, че просто искате да добавите запетая в края на стойността на колоната, използвайте:
SELECT DISTINCT TO_CHAR(subject_key) || ','
FROM MYTABLE
Двойната тръба -- "||" -- е средството на Oracle [,PostgreSQL и сега ANSI] за свързване на низове в SQL. Използвах TO_CHAR за изрично конвертиране на типа данни, но вие можете да използвате:
SELECT DISTINCT subject_key || ','
FROM MYTABLE
...ако това не е необходимо.