LISTAGG()WITHIN GROUP()

    SELECT T1.TABLE_NAME
          ,LISTAGG(CASE WHEN T2.DATA_TYPE = 'DATE'  THEN 'TO_CHAR('||T1.COLUMN_NAME || ',''YYYYMMDD'')' ELSE T1.COLUMN_NAME END,'||''|''||')WITHIN GROUP(ORDER BY T1.COLUMN_NAME) AS KEY_NAMES
     FROM USER_CONS_COLUMNS T1
     JOIN USER_TAB_COLUMNS T2
       ON T1.TABLE_NAME = T2.TABLE_NAME
      AND T1.COLUMN_NAME = T2.COLUMN_NAME
    WHERE T1.POSITION IS NOT NULL
      AND T1.TABLE_NAME = '""" + table_name + """'
 GROUP BY T1.TABLE_NAME 

  

原文地址:https://www.cnblogs.com/zhanglin123/p/14913212.html