ここでは、Mattさん。私は比較的複雑な視点で問題を抱えています。私はパーツとサービステーブルを持っていて、それぞれが特定のパーツ/サービスの一意の識別子を持っています。私はこれらをサービス請求書テーブルとそれに続くビューをM:N関係としてリンクしようとしているので、請求書番号(請求書主キー)とパート/サービス番号(パート/サービスプライマリキー)を組み合わせたプライマリキーとして使用します。SQL Serverのビューの列の合計が問題になる
私が手にエラーがMに個々の部品とサービス料を合計すると関係していCREATE TABLE service_invoice
( servinv_Num VARCHAR2(10) CONSTRAINT serv_snum_PK PRIMARY KEY,
servinv_EmpID NUMBER(6) CONSTRAINT serv_empnum_FK REFERENCES employee(empID),
servinv_CustID NUMBER(6) CONSTRAINT serv_custid_FK REFERENCES customer(custID),
servinv_VIN VARCHAR2(25) CONSTRAINT serv_VIN_FK REFERENCES vehicle(vehicle_vin),
servinv_Terms VARCHAR2(6) CONSTRAINT serv_trms_NN NOT NULL,
servinv_Date DATE);
CREATE TABLE Parts
( PartID VARCHAR2(10) CONSTRAINT Part_PartID_PK PRIMARY KEY,
PartDesc VARCHAR2(50) CONSTRAINT Part_PartDesc_NN NOT NULL,
PartCharge NUMBER(4,2) CONSTRAINT Part_PartCharge_NN NOT NULL);
CREATE TABLE Service
( ServiceID VARCHAR2(10) CONSTRAINT Serv_ServID_PK PRIMARY KEY,
ServDesc VARCHAR2(50) CONSTRAINT Serv_ServName_NN NOT NULL,
ServCharge NUMBER(4,2) CONSTRAINT Serv_ServCharge_NN NOT NULL);
CREATE TABLE Serv_SI_Rel
( SI_num VARCHAR2(10) CONSTRAINT ServSI_SInum_FK REFERENCES service_invoice(servinv_Num),
ServiceID VARCHAR2(10) CONSTRAINT ServSI_ServID_FK REFERENCES Service(ServiceID),
CONSTRAINT ServSI_SInum_ServID_PK PRIMARY KEY(SI_num, ServiceID));
CREATE TABLE Parts_SI_Rel
( SI_num VARCHAR2(10) CONSTRAINT PartSI_SInum_FK REFERENCES service_invoice(servinv_Num),
PartID VARCHAR2(10) CONSTRAINT PartSI_PartID_FK REFERENCES Parts(PartID),
CONSTRAINT PartSI_SInum_PartID_PK PRIMARY KEY(SI_num, PartID));
CREATE OR REPLACE VIEW ServiceInvoiceDoc
AS
(
SELECT si.servinv_Num, si.servinv_Date, si.servinv_Terms,
es.empName,
sc.custName, sc.custHouse, sc.custCity,
sc.custState, sc.custZIP, sc.custPhone, sc.custEmail,
sv.vehicle_VIN, sv.vehicle_mileage,
srel.ServiceID,
prel.PartID,
s.ServDesc, s.ServCharge,
p.PartDesc, p.PartCharge,
SUM(s.ServCharge) TotalServCharges,
SUM(p.PartCharge) TotalPartsCharges,
(SUM(s.ServCharge)+SUM(p.PartCharge)) SubTotalCharges,
(SUM(s.ServCharge)+SUM(p.PartCharge))*0.0825 Taxes,
(SUM(s.ServCharge)+SUM(p.PartCharge))*1.0825 TotalCharges
FROM service_invoice si
JOIN employee es
ON (es.empID = si.servinv_EmpID)
JOIN customer sc
ON (sc.custID = si.servinv_CustID)
JOIN vehicle sv
ON (sv.vehicle_VIN = si.servinv_VIN)
LEFT OUTER JOIN Serv_SI_Rel srel
ON (srel.SI_Num = si.servinv_Num)
LEFT OUTER JOIN Parts_SI_Rel prel
ON (prel.SI_num = si.servinv_Num)
JOIN Parts p
ON (prel.PartID = p.PartID)
JOIN Service s
ON (srel.ServiceID = s.ServiceID));
:Nの関係ここでは、全体の関係およびビューのための私のコードです。 「
ORA-00937: not a single-group group function
私はコマンドでグループを固定しようとしましたが、グループ識別子(サービスインボイス)が一部またはサービスのテーブルには含まれていない、とドンに参加する:ここでは、実行からのエラーコードですグループのためにこれらをリンクしているようだ。例えば私はGROUP BY si.servinv_Numを呼び出してみました
これはまったく解決できますか、まったく間違っていますか?私はM:Nの関係を1:Mとしてドロップするオプションを持っており、単に各部品/サービス料金の別々の請求書を作成していますが、コンパクトでプロフェッショナルなものにしたいと考えています。
ご協力いただければ幸いです。あなたのお時間をありがとうございました!
自分の投稿を編集してください - 特にタグは下部にあります。 (あなたがoracleとoracle-apexを使用していないと仮定します)。 – mathguy