Oracleには、MySQLのGROUP_CONCATのような関数はありません。これは、まさにあなたが求めている機能です。 このような文字列集計のさまざまなオプションがこのページに用意されています -1つはカスタム関数を使用することです:
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
二重パイプ-"||" --は、SQLで文字列を連結するためのOracle [、PostgreSQL、現在はANSI]の手段です。 TO_CHARを使用してデータ型を明示的に変換しましたが、次を使用できます:
SELECT DISTINCT subject_key || ','
FROM MYTABLE
...それが必要ない場合。