SQL Developer创建视图报ORA-00957重复列名错误如何解决
问题原因
ORA-00957重复列名错误的触发规则是:Oracle要求视图下的所有字段必须具备唯一列名,不允许存在同名字段。
当前SELECT语句同时查询了customers.id和orderdetails.id两个字段,二者的默认输出列名均为id,重名冲突直接导致视图创建失败。
额外注意:原SQL的WHERE条件存在隐式类型转换问题:to_char(sale_date, 'MM')返回值为字符串类型,和数字05比较时Oracle会触发隐式转换,虽然部分场景下可运行,但存在匹配异常的隐患。
修复方案
为两个重名的id字段设置互不重复的别名,同时修正WHERE条件的类型匹配问题,修改后可正常执行的SQL如下:
create view vw_sales_may as select customers.id as customer_id, orderdetails.id as order_detail_id, sales.sale_date, sales.total_value from customers inner join sales on customers.id = sales.customer_id join orderdetails on orderdetails.customer_id = customers.id where to_char(sale_date, 'MM') = '05';
如果业务场景不需要同时保留客户ID、订单明细ID两个字段,也可以直接删除SELECT子句中不需要的id列,只要保证最终查询返回的所有列名无重复即可正常创建视图。
内容的提问来源于stack exchange,提问作者Sahil Patel
相关产品推荐
相关产品推荐

