SELECT TAB.TABSCHEMA AS SCHEMA_NAME
, CONST.CONSTNAME AS PK_NAME
, LISTAGG(KEY.COLNAME, ', ')
WITHIN GROUP(ORDER BY KEY.COLSEQ) AS COLUMNS
, TAB.TABNAME AS TABLE_NAME
FROM SYSCAT.TABLES TAB
INNER JOIN SYSCAT.TABCONST CONST
ON CONST.TABSCHEMA = TAB.TABSCHEMA
AND CONST.TABNAME = TAB.TABNAME AND CONST.TYPE = 'P'
JOIN SYSCAT.KEYCOLUSE KEY
ON CONST.TABSCHEMA = KEY.TABSCHEMA
AND CONST.TABNAME = KEY.TABNAME
AND CONST.CONSTNAME = KEY.CONSTNAME
WHERE TAB.TYPE = 'T'
AND TAB.TABSCHEMA NOT LIKE 'SYS%'
GROUP BY TAB.TABSCHEMA
, CONST.CONSTNAME
, TAB.TABNAME
ORDER BY TAB.TABSCHEMA
, CONST.CONSTNAME
|