Oracle tidak memiliki fungsi seperti GROUP_CONCAT MySQL, yang merupakan fungsi yang Anda minta. Berbagai opsi untuk agregasi string tersebut disediakan di halaman ini - salah satunya adalah menggunakan fungsi khusus:
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;
Kemudian Anda akan menggunakannya seperti:
SELECT get_subjectkey(?) AS subject_key
FROM DUAL
...mengganti "?" dengan nilai kunci utama.
Sebelumnya
Dengan asumsi Anda hanya ingin menambahkan koma di akhir nilai kolom, gunakan:
SELECT DISTINCT TO_CHAR(subject_key) || ','
FROM MYTABLE
Pipa ganda -- "||" -- adalah cara Oracle [,PostgreSQL dan sekarang ANSI] untuk menggabungkan string dalam SQL. Saya menggunakan TO_CHAR untuk mengonversi tipe data secara eksplisit, tetapi Anda dapat menggunakan:
SELECT DISTINCT subject_key || ','
FROM MYTABLE
...jika tidak perlu.