2010-11-10 113 views
0

我有多个表都具有相同的结构 - 除了其中的几个有一列错误命名。我想要一个sql语句,允许用户使用正确的名称选择错误的列(只有2个可能的名称 - 正确的和错误的)。我想我可以让查询首先看看all_tab_columns视图来查找表格,并确定该表格必须检索哪一列的拼写检索数据...Oracle SQL动态选择列

回答

0

我知道重命名/更改现有生产表,但似乎这个问题的最佳解决方案只是使用正确的列名更新错误名称的表。是否有一个原因(超出额外的工作),这是不可行的?

+0

不幸的是,更新表列不是一个选项。 – bpprog 2010-11-10 15:31:44

+0

这几乎奏效了......问题在于解码语句中出现错误,因为其中一个列名不存在于表clinical_studies中... select clinical_study_id,NVL(decode(a,'STUDY',STUDY), DECODE( 'BADNAME',badname)) 从 (SELECT NVL( (选择从ALL_TAB_COLUMNS 列名,其中所有者= 'RXA_DES' 和表名= 'CLINICAL_STUDIES' 和列名= 'BADNAME'), (从选择列名all_tab_columns 其中owner ='RXA_DES' 和table_name ='CLINICAL_STUDIES' 和column_name ='STUDY'))作为 FROM dual – bpprog 2010-11-10 16:31:11