Duplicate of this one:
If you have Oracle 10G:
CREATE OR REPLACE FUNCTION GET_COMMA_SEPARATED_VALUE ( INPUT_VAL IN NUMBER )
RETURN VARCHAR2
IS
RETURN_TEXT VARCHAR2 ( 10000 ) := NULL;
BEGIN
FOR X IN ( SELECT
ID
FROM
ACCOUNTS
WHERE
OC_YEAR = INPUT_VAL )
LOOP
RETURN_TEXT :=
RETURN_TEXT
|| ','
|| X.ID;
END LOOP;
RETURN LTRIM ( RETURN_TEXT,
',' );
END;
/
So, you can do like:
SELECT
GET_COMMA_SEPARATED_VALUE ( ID ),
OC_YEAR
FROM
ACCOUNTS;
If you have got oracle 11g, you can use listagg :
SELECT
LISTAGG ( OC_YEAR,
', ' )
WITHIN GROUP (ORDER BY ID),
OC_YEAR
FROM
ACCOUNTS
GROUP BY
OC_YEAR;