【发布时间】:2021-06-02 12:38:45
【问题描述】:
大家好,我遇到了一个要求,即找出特定模式 (SCHEMA_A) 中列 (col1,col2,col3) 的计数,但这里有一个问题,我必须找出所有列的组合为了计算有多少表使用了VALID_FROM_DATE、VALID_FROM_DATE、TIMESTAMP,下面是更多细节
数据库 - Oracle 11g
表搜索 - DBA_TAB_COLUMNS
col1 - VALID_FROM_DATE
col2 - VALID_TO_DATE
col3 - 时间戳
组合搜索以及所有表的计数
combination 1
VALID_FROM_DATE + VALID_TO_DATE + TIMESTAMP
combination 2
VALID_FROM_DATE + VALID_TO_DATE
combination 3
VALID_FROM_DATE + TIMESTAMP
combination 4
VALID_TO_DATE + TIMESTAMP
combination 5
VALID_FROM_DATE
combination 6
VALID_TO_DATE
combination 7
TIMESTAMP
查询 - 我正在尝试
select count(distinct table_name) from DBA_TAB_COLUMNS
where owner='SCHEMA_A'
and column_name in ('VALID_FROM_DATE','VALID_TO_DATE','TIMESTAMP')
order by table_name;
但是如何在单个查询中实现上述组合 (1-7) 以捕获计数和总体百分比,是否有可能以最简单的方式实现单个查询块
percentage - round(100*ratio_to_report(count(*)) over (), 2) percentage
有什么建议吗?
【问题讨论】:
-
嗨 Rakesh,我并不完全清楚你需要达到什么目标。您说“识别列”,但在查询中您正在查找表名(删除不同 n 表名之间的逗号)。能否请您提供您需要得到的测试数据和结果
-
@ekochergin - 现在更新了问题,我需要找出有多少表用户使用上述列,无论所有表都具有 1 到 7 的组合
标签: sql oracle dynamic plsql oracle-sqldeveloper