oracle,把多列同时转成用逗号分割的一行,并去除重复数据

SELECT regexp_replace(create_user, '([^,]*)(,\1)+($|,)', '\1\3')
    createUser,
    regexp_replace(assign_user, '([^,]*)(,\1)+($|,)', '\1\3')
    assignUser,
    regexp_replace(user_name, '([^,]*)(,\1)+($|,)', '\1\3')
    userName,
    regexp_replace(firm_id, '([^,]*)(,\1)+($|,)', '\1\3') firmId,
    regexp_replace(high_seas, '([^,]*)(,\1)+($|,)', '\1\3') highSeas
    FROM
    (SELECT listagg(create_user, ',') within GROUP(ORDER BY create_user)
    create_user,
    listagg(assign_user, ',') within GROUP(ORDER BY
    assign_user) assign_user,
    listagg(t1.user_name, ',') within GROUP(ORDER
    BY t1.user_name)
    user_name,
    listagg(t1.firm_id, ',') within GROUP(ORDER
    BY t1.firm_id) firm_id,
    listagg(t1.high_seas, ',') within GROUP(ORDER
    BY t1.high_seas) high_seas
    FROM TABLE(XXXX_XXXX) t1)

orcale里的正则替换
regexp_replace(1,2,3,4,5,6)
语法说明:1:字段 2:替换的字段 3:替换成什么 4:起始位置(默认从1开始) 5:替换的次数(0是无限次) 6:不区分大小写

你可能感兴趣的:(Oracle)