Oracle не имеет функции, подобной MySQL GROUP_CONCAT, которая является именно той функцией, которую вы запрашиваете. На этой странице представлены различные опции для такого агрегирования строк - одна из них - использовать пользовательскую функцию:
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
... если в этом нет необходимости.