Ora-00904 - 创建视图时出错

时间:2013-05-24 08:35:41

标签: oracle11g

我坚持在Oracle中创建一个视图,但在创建视图之前,我总是首先测试它并且我总是遇到这个错误:Ora-00904。

就是这种情况。我有一个查询集,请说 查询A ,我需要使用 UNION ALL 与< strong>查询A 本身,只有少量修改应用于创建另一个更大的查询集 - 查询B 。让我这么做的主要限制因素是数据库设计,我不会在公司中改变它,所以我必须适应它。 查询A 联盟查询A 6次,创建查询B 。附加的主要约束是查询B 仅来自1个数据库用户,但是有54个数据库用户具有获取相同查询所需的相同结构。 查询B(db user1)联合查询B(db user2)联合查询B(db user3)等等,直到54,然后最终创建< strong>查询C ---最终输出。我的脚本已经达到了6048行,然后我遇到了这个问题,当我测试查询A 查询B 时,我没有得到这个问题。我的所有表名,所有者名和列名都是正确的,但我收到了这个错误。

这是代码(需要重复54x6次) - 查询A.查询B仅应用一些类似的修改。:

Select 
  '2013' "YEAR",
  Upper(a.text_month) "MONTH",
  Upper('Budget') "VERSION",
  case
    when length(b.level1_name) > 5 then  'Parent'
    else 'SUBSIDIARIES'
  end "COMPANY_GROUP",
  case
    when length(b.level1_name) < 6 and b.level1_name <> '1000' then  'Subsidiaries'
    else  '1000  Parent' 
  end "COMPANY",
  case
    when length(b.level1_name) < 6 and b.level1_name <> '1000' then  'SUBS'
    else  '1000'
  end "COMPANY_CODE",
  case
     when length(b.level1_name) > 5 then  'Parent'
    else 'SUBSIDIARIES'
  end "COMPANY_NAME",
  b.level1_displayname "DIVISION",
  b.level1_name "DIVISION_CODE",
  case
    when length(b.level1_name) > 5 then  ltrim(upper(substr(b.level1_displayname, 8)))
    else   upper(ltrim(substr(b.level1_displayname, 10)))
  end "DIVISION_NAME",
  upper(a.text_nature_of_trip) "NATURE_OF_TRAVEL",
  upper(a.text_placeeventstraining) "TRAVEL_DETAILS",
  upper(a.text_country) "COUNTRY",
  a.text_name_of_employee "EMPLOYEE_NAME",  a.float_no_of_attendees "NO_OF_ATTENDEES",    
  a.text_sponsored "SPONSORED",
  a.text_remarks "REMARKS",
  'OTHER TRAVEL EXPENSES' "COST_ELEMENT", 
   a.FLOAT_702120005_OTHER_TRAVEL_E "AMOUNT"
From PUBLISH_PNL_AAAA_2013.et_travel_transaction a, 
PUBLISH_PNL_AAAA_2013.cy_2elist b
Where a.elist = b.level3_iid

1 个答案:

答案 0 :(得分:1)

ORA-00904是“无效的列名” - 要么错误地拼写了列名,要么用错误的表别名作为前缀,从字符串文字中省略引号或任何其他问题。

检查代码中的错误消息提及的错误。

相关问题