当前位置: 首页 > 面试题库 >

出现SQL错误:ORA-00957:创建视图时重复的列名

宇文航
2023-03-14
问题内容

我正在尝试进行查看,但是出现重复的列名错误。如果我单独运行选择查询,则查询返回的结果如下:

SELECT distinct app.APP_REF_NO, app.APP_STATUS, app.APP_DT, app.ATTEND_STAFF,
                app.ATTEND_BRANCH, app.PRODUCT_TYPE, cust.CUST_ID, 
                cust.APP_JOINT_T, cust.ID1_TYPE, cust.ID1, cust.ID2_TYPE, 
                cust.ID2, cust.FIRST_NAME, cust.LAST_NAME, cust.FULL_NAME, 
                cust.FULL_NAME_CAP, cust.DOB, fac.FACILITY_NO, fac.PRODUCT_TYPE,
                fac.PRODUCT_CODE, fac.MAIN_PROD_IND, fac.AMT_APPLIED
FROM 
    LOSA_APP app 
LEFT JOIN 
    LOSA_CUST cust 
ON
    cust.APP_REF_NO = app.APP_REF_NO
LEFT JOIN 
   LOSA_FACILITIES fac 
ON
    fac.APP_REF_NO = app.APP_REF_NO
LEFT JOIN 
    OS_CURRENTSTEP STEP 
ON
    STEP.REF_ID = app.APP_REF_NO
   WHERE (app.APP_STATUS ='P' OR app.APP_STATUS ='T' OR 
         ((app.APP_STATUS='R' OR app.APP_STATUS='S') AND STEP.STEP_NAME='011'));

此查询工作正常。但是当我尝试将其作为如下视图运行时:

CREATE VIEW basit_test1 AS
SELECT distinct app.APP_REF_NO, app.APP_STATUS, app.APP_DT, app.ATTEND_STAFF,
                app.ATTEND_BRANCH, app.PRODUCT_TYPE, cust.CUST_ID, 
                cust.APP_JOINT_T, cust.ID1_TYPE, cust.ID1, cust.ID2_TYPE, 
                cust.ID2, cust.FIRST_NAME, cust.LAST_NAME, cust.FULL_NAME, 
                cust.FULL_NAME_CAP, cust.DOB, fac.FACILITY_NO, fac.PRODUCT_TYPE,
                fac.PRODUCT_CODE, fac.MAIN_PROD_IND, fac.AMT_APPLIED
FROM 
    LOSA_APP app 
LEFT JOIN 
    LOSA_CUST cust 
ON
    cust.APP_REF_NO = app.APP_REF_NO
LEFT JOIN 
   LOSA_FACILITIES fac 
ON
    fac.APP_REF_NO = app.APP_REF_NO
LEFT JOIN 
    OS_CURRENTSTEP STEP 
ON
    STEP.REF_ID = app.APP_REF_NO
   WHERE (app.APP_STATUS ='P' OR app.APP_STATUS ='T' OR 
         ((app.APP_STATUS='R' OR app.APP_STATUS='S') AND STEP.STEP_NAME='011'));

然后,我得到重复的列名错误。为什么会出现此错误?


问题答案:

您有两product_type列:

fac.PRODUCT_TYPE

app.PRODUCT_TYPE

您应该别名其中之一,例如

app.PRODUCT_TYPE app_prod_type


 类似资料:
  • 问题内容: 我不断收到CREATE TABLE语法错误,但是看不到错误!是什么导致错误? 我的SQL: 问题答案: 由于您的DDL语句包括,因此您必须使用ADO执行它。我将您的语句加载到字符串变量中,然后从Access 2007中执行该语句,如下所示: 的 工资 字段是小数精度8,尺度2和默认15000。 是Jet 4.0附带的Access SQL功能之一。这些功能不适用于从DAO执行的语句。如果

  • 我有下表(TBL_视频),在“TIMESTAMP”中有重复的列条目,我只想在“CAMERA”编号匹配时删除它们。 之前: 之后: 我已尝试此语句,但列不会相应删除。我非常感谢为生成正确的SQL语句所提供的所有帮助。提前谢谢!

  • 这是我的密码。但我不知道使用11G速递版以来的错误在哪里。它显示错误,但不显示错误在哪一行

  • 我正在用MySQL数据库构建一个django应用程序。当我第一次运行“Python Manage.py Migrate”时,一些表创建得很好,然后出现一些错误。引出的错误是: 完整的回溯是:

  • 我正在尝试使用EclipseLink创建一个表。正在使用的java类是:- EL警告]:2017-04-07 14:04:53.768--ServerSession(1650327539)--异常[EclipseLink-4002](Eclipse持久性服务-2.6.3.v20160428-59C81C5):org.Eclipse.Persistence.exceptions.DatabaseEx

  • 问题内容: 我尝试在表上创建一个自动递增的列,正如我在这篇文章中看到的,有两种方法,使用Identity列的第二种实现是一种更优雅的解决方案,但是当我尝试实现它时,出现以下错误: 实际的表脚本实现: 可以看出,我尝试自动递增的列是表的主键。 这是我获得解决方案的参考。 问题是我使用了旧版本的Oracle 11g。 问题答案: 您尝试连接的Oracle数据库 (服务器) 也许是 12c ,但是您正在