2016-12-08 25 views
1

エラーは異常ですが、発生場所をちょっと丁寧に説明しました。しかし、標準の修正は動作していないようです。SQLエイリアスであっても、作成ビューに重複する列名エラーがあります

ここでエラーが発生します。それは大きな声明だので、私はエラー

CREATE OR REPLACE VIEW SalesInvoiceDoc 
AS 
(SELECT si.salinv_Num, si.salinv_Terms, si.salinv_SaleDate, 
      es.empName AS SalesAgent, man.empName AS ApprovingManager, 
      si.salinv_ApproveDate, ... 

... FROM service_invoice si 
JOIN employee es 
    ON (es.empID = si.salinv_EmpID) 
JOIN employee man 
    ON (man.empID = si.salinv_ManID) 

は基本的にそれは販売代理店および承認マネージャーと販売請求書ドキュメントの見つけたところ私はちょうど掲示しています。どちらもemployeeテーブルに格納され、サブタイプ識別子は 'manager'または 'sales'に設定され、サブタイプchildrenテーブルのビューは重複エラーを回避します。

私は重複する列を試してみて、避けるために、エイリアスを供給してきましたが、私はこのスクリプトを実行すると、私は重複した列名のエラーが表示されます。

ORA-00957: duplicate column name 

は、これを解決する方法を誰もが知っていますか?それも可能ですか?どんな助けでも大歓迎です。前もって感謝します!

編集:ここで正式な声明はあなたが2つの異なるテーブルの列名複製している

CREATE OR REPLACE VIEW SalesInvoiceDoc 
AS 
(SELECT si.salinv_Num, si.salinv_Terms, si.salinv_SaleDate, 
    es.empName AS SalesAgent, 
    man.empName AS ApprovingManager, si.salinv_ApproveDate, 
    sc.custName, sc.custHouse, sc.custCity, 
    sc.custState, sc.custZIP, sc.custPhone, sc.custEmail, 
    sv.vehicle_VIN, sv.vehicle_year, sv.vehicle_make, 
     sv.vehicle_model, sv.vehicle_ext_color, sv.vehicle_trim, 
     sv.vehicle_list_base_price, sv.vehicle_mileage, sv.vehicle_condition, 
     sv.vehicle_description, 
    ti.vehicle_make, ti.vehicle_year, ti.vehicle_model, ti.vehicle_VIN, 
     ti.tradein_allowance, 
    sv.vehicle_list_base_price "SellingPrice", sv.shipping "Shipping", 
     ti.tradein_allowance "TradeAllowance", 
(sv.vehicle_list_base_price + sv.shipping - ti.tradein_allowance) "Subtotal", 
(sv.vehicle_list_base_price + sv.shipping - ti.tradein_allowance)*.0825 "Taxes", 
(sv.vehicle_list_base_price + sv.shipping - ti.tradein_allowance)*1.0825 "TotalSellingPrice" 

FROM sales_invoice si 
JOIN employee es 
    ON (es.empID = si.salinv_EmpID) 
JOIN employee man 
    ON (man.empID = si.salinv_ManID) 
JOIN customer sc 
    ON (sc.custID = si.salinv_CustID) 
JOIN vehicle sv 
    ON (sv.vehicle_VIN = si.salinv_SalVIN) 
LEFT OUTER JOIN vehicle ti 
    ON (ti.vehicle_VIN = si.salinv_tiVIN) 
); 
+0

MySQLまたはMS SQL Serverを使用していますか? – jarlh

+0

編集したタグ「Oracle」はエラー「ORA-00957」を参照しています。将来適切にタグ付けしてください。 – Rahul

+0

'ビュービュー名(colname1、colname2、...)...を作成してください。 – jarlh

答えて

1

です:

sv.vehicle_VIN, 
sv.vehicle_year, 
sv.vehicle_make, 
sv.vehicle_model 

ti.vehicle_make, 
ti.vehicle_year, 
ti.vehicle_model, 
ti.vehicle_VIN 

に結果の列名が含まれていません。テーブルエイリアス。

0

問題はsv.vehicle_VINがあなたのクエリで二回登場するので、他の列をしている原因です。下記参照。それに応じて別名を付ける必要があります

**sv.vehicle_VIN**, **sv.vehicle_year**, **sv.vehicle_make**, **sv.vehicle_model**, 

    **ti.vehicle_make**, **ti.vehicle_year**, **ti.vehicle_model**, **ti.vehicle_VIN**, 
関連する問題