你是否在這樣的事情?
with sample_data as (select 'A' table_name, 'COL1' column_name from dual union all
select 'A' table_name, 'COL2' column_name from dual union all
select 'A' table_name, 'COL3' column_name from dual union all
select 'B' table_name, 'COL1' column_name from dual union all
select 'B' table_name, 'COL2' column_name from dual union all
select 'C' table_name, 'COL2' column_name from dual union all
select 'C' table_name, 'COL3' column_name from dual union all
select 'C' table_name, 'COL4' column_name from dual union all
select 'D' table_name, 'COL1' column_name from dual)
select distinct table_name,
case when count(*) over (partition by table_name) = 2 then 'Both cols present'
when count(*) over (partition by table_name) = 1 and column_name = 'COL1' then 'COL1 present only'
when count(*) over (partition by table_name) = 1 and column_name = 'COL2' then 'COL2 present only'
end cols_present
from sample_data
where column_name in ('COL1', 'COL2');
TABLE_NAME COLS_PRESENT
---------- -----------------
A Both cols present
B Both cols present
C COL2 present only
D COL1 present only
或許是這樣的:
with sample_data as (select 'A' table_name, 'COL1' column_name from dual union all
select 'A' table_name, 'COL2' column_name from dual union all
select 'A' table_name, 'COL3' column_name from dual union all
select 'B' table_name, 'COL1' column_name from dual union all
select 'B' table_name, 'COL2' column_name from dual union all
select 'C' table_name, 'COL2' column_name from dual union all
select 'C' table_name, 'COL3' column_name from dual union all
select 'C' table_name, 'COL4' column_name from dual union all
select 'D' table_name, 'COL1' column_name from dual)
select table_name,
max(case when column_name = 'COL1' then column_name end) first_col,
max(case when column_name = 'COL2' then column_name end) first_col
from sample_data
where column_name in ('COL1', 'COL2')
group by table_name;
TABLE_NAME FIRST_COL FIRST_COL_1
---------- --------- -----------
A COL1 COL2
B COL1 COL2
C COL2
D COL1
(顯然,我只是嘲笑了一個名爲SAMPLE_DATA子查詢包含一些數據,你只需直接查詢USER_TAB_COLUMNS表。)
爲了澄清,您正在尋找任何帶有相關名稱X和X_FOO的列的表,其中X可以是任何東西,而FOO是固定的;而不知道你在找哪個X? –
正確。我會更新這個問題來拼出來。 –