如何从所有表中选择列的所有可能值?

时间:2016-09-22 13:43:39

标签: sql oracle select oracle-sqldeveloper

SELECT POM.TABLE_NAME, POM.COLUMN_NAME
FROM ALL_TAB_COLUMNS POM
WHERE  POM.COLUMN_NAME LIKE'%STATUS%'

我想查看列表中列中的所有可能值(如果可能,在一行中)。如何修改此选择以执行此操作?

我想要像这样的东西

 TABLE_NAME | COLUMN_NAME |VALUES
 -----------| ----------- | -------
 CAR        | COLOR       | RED,GREEN 

1 个答案:

答案 0 :(得分:0)

您可以根据需要使用以下查询。它为表提取了不同的列值。 它只能用于具有有限数量的不同值的表,因为我使用了LISTAGG函数。

SELECT POM.TABLE_NAME, POM.COLUMN_NAME,
       XMLTYPE(DBMS_XMLGEN.GETXML('SELECT LISTAGG(COLUMN_NAME,'','') WITHIN GROUP (ORDER BY COLUMN_NAME) VAL 
                                   FROM (SELECT DISTINCT '|| POM.COLUMN_NAME ||' COLUMN_NAME
                                         FROM '||POM.OWNER||'.'||POM.TABLE_NAME||')')
              ).EXTRACT('/ROWSET/ROW/VAL/text()').GETSTRINGVAL() VAL
FROM   ALL_TAB_COLUMNS POM
WHERE  POM.COLUMN_NAME LIKE'%STATUS%';