我需要在哪里动态地创建一个表(根据创建此表的过程中的输入参数,列数可能会发生变化),表中的数据如下所示。
PK col1 col2 col3
A null 1-2 3-4
B null null 4-5
C null 5-6 null
现在的要求是,我只想提取列,其中至少应该有1条记录,没有null,并将整个数据放入文件中。我的输出应该如下所示(col1从输出中流出,因为它都是空的)。
PK col2 col3
A 1-2 3-4
B null 4-5
C 5-6 null
有人能提供任何线索来达到这个目的吗?提前谢谢。
发布于 2014-07-16 11:14:57
我使用了来自all_tab_cols的all_tab_cols,并根据我的需求取得了效果。谢谢。
发布于 2014-07-05 03:30:12
我怀疑这不是很有效,但是您可以使用COUNT()来确定列中是否只有null,因为COUNT(column_here)只会为每个非空值添加1。因此,如果计数为零,则该列仅为NULL。
然后,可以将其组合到一个查询中,生成一个有效的select语句,然后立即执行该语句(当然要小心避免sql注入)。
总之,这里有一个例子:
select
'select '
|| substr((
select
case when count(COL1) > 0 then ',col1' else '' end
|| case when count(COL2) > 0 then ',col2' else '' end
|| case when count(COL3) > 0 then ',col3' else '' end
from a_table
),2,8000)
|| ' from '
|| ' a_table'
as sql_string
from dual
;
请参阅这只小提琴
上述结果如下:
| SQL_STRING |
|--------------------------------|
| select col2,col3 from a_table |
https://stackoverflow.com/questions/24578400
复制相似问题