Oracle11g Ora-00904-创建视图时出错

Oracle11g Ora-00904-创建视图时出错,oracle11g,Oracle11g,我一直坚持在Oracle中创建视图,但在创建视图之前,我总是先测试它,并且总是出现以下错误:Ora-00904 情况就是这样。我有一组查询,比如说查询A,我需要使用UNION ALL将其与查询A本身结合起来,只需进行少量修改即可创建另一组更大的查询—查询B。让我继续这样做的主要约束是数据库设计,而我在公司中无法更改它,所以我必须适应它。查询A联合查询A 6次创建查询B。附加的主要约束是查询B仅来自1个数据库用户,但有54个数据库用户具有相同的结构,我需要获取相同的查询。查询B db user1

我一直坚持在Oracle中创建视图,但在创建视图之前,我总是先测试它,并且总是出现以下错误:Ora-00904

情况就是这样。我有一组查询,比如说查询A,我需要使用UNION ALL将其与查询A本身结合起来,只需进行少量修改即可创建另一组更大的查询—查询B。让我继续这样做的主要约束是数据库设计,而我在公司中无法更改它,所以我必须适应它。查询A联合查询A 6次创建查询B。附加的主要约束是查询B仅来自1个数据库用户,但有54个数据库用户具有相同的结构,我需要获取相同的查询。查询B db user1 unions查询B db user2 unions查询B db user3等,直到54,然后最终创建查询C—最终输出。我的scrip已经达到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

ORA-00904是无效的列名-您可能拼写错误,或者在列名前面加了错误的表别名,省略了字符串文字中的引号,或者出现了许多其他问题


检查错误消息中提到的代码点是否有类似的错误。

如果错误没有给您一个行号,则编辑脚本,通过注释select子句的部分内容来减少您要查看的区域。是的,这确实是个问题,用户对它有不同的命名。oracle的问题在于,当您有冗长的脚本时,它不会给出错误的位置。谢谢