-2

これは、1 つのサブクエリを含む単純な挿入クエリであり、完全に機能しています。

INSERT INTO CSolutions..Report2  

SELECT  Nov.Chain, CG.Grouping, reg.code as regcode,reg.pname,reg.fname,reg.sname, SUM(NS.Currency) as sumeur ,   sum(ns2.kpl) as sumkpl,0,0,0,0


FROM CSolutions..NovSales NS,CSolutions..NSaleskpl NS2, CSolutions..NovCGroup CG, sales..reg_eng reg,
        (SELECT DISTINCT P.Code, Nov.Chain
        FROM Register..Pcy P
            INNER JOIN Register..TCustomer TC ON (P.Code = TC.PCode)
            INNER JOIN CSolutions..Novies2 Nov ON (TC.Code = Nov.TCode)
        ) AS Nov

WHERE NS.SpCode = CG.SpCode and ns.spcode = ns2.spcode AND Ns.PCode = Nov.Code
and ns.spcode = reg.code
 and ns.pcode = ns2.pcode

  **and NS.SalesMonth = '201205'
   and  NS2.SalesMonth = '201205'**


GROUP BY Nov.Chain, CG.Grouping , reg.code,reg.pname,reg.fname,reg.sname

これは同じクエリの派生物ですが、正しく機能していません。

INSERT INTO CSolutions..Report2  

SELECT  Nov.Chain, CG.Grouping, reg.code as regcode,reg.pname,reg.fname,reg.sname, SUM(NS.Currency) as sumeur ,   sum(ns2.kpl) as sumkpl,0,0,0,0


FROM CSolutions..NovSales NS,CSolutions..NSaleskpl NS2, CSolutions..NovCGroup CG, sales..reg_eng reg,
        (SELECT DISTINCT P.Code, Nov.Chain
        FROM Register..Pcy P
            INNER JOIN Register..TCustomer TC ON (P.Code = TC.PCode)
            INNER JOIN CSolutions..Novies2 Nov ON (TC.Code = Nov.TCode)
        ) AS Nov

WHERE NS.SpCode = CG.SpCode and ns.spcode = ns2.spcode AND Ns.PCode = Nov.Code
and ns.spcode = reg.code
 and ns.pcode = ns2.pcode

  **and NS.SalesMonth between '201201' and '201205'
   and  NS2.SalesMonth between '201201' and '201205'**


GROUP BY Nov.Chain, CG.Grouping , reg.code,reg.pname,reg.fname,reg.sname

これにより、5 か月の合計金額の 5 倍が得られます。

私は失読症で、エラーを見つけるのに苦労しています。誰かが私を助けてくれることを願っています?? :)

4

1 に答える 1

0

CSolutions..NovSalesおよびCSolutions..NSaleskplNS2のsalesmonthには参加しません。最初のクエリでは、1か月の販売のみを見ているため、これは重要ではありません。2番目のクエリでは、各テーブルから値の範囲を選択しているため、複数のsalesmonthがあると思います。これにより、salesmonthのこれによりクロスジョインが発生します。

于 2012-06-08T11:51:46.690 に答える