2012-06-08 48 views
-2

现在,这是一个子查询一个简单的插入查询,它的工作完美:乘组由,诵读困难

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个月的总金额,

我是一个阅读障碍,我很难发现错误,我希望有人能帮助我? :)

+2

“工作不正常” - 请更具描述性。 –

+0

这将给5个月的总金额的5倍, –

+0

http://sscce.org/ – Marcin

回答

0

在CSolutions..NovSales和CSolutions..NSaleskpl NS2没有加入销售月。在第一个查询中,这并不重要,因为您只查看一个销售月。在第二个查询中,我假设有多个销售月,因为您正在从每个表中选择一个值范围。正因为这样,销售月份才会发生交叉连接。

+0

谢谢!我试图按salesmonth进行分组,这不是我想要的解决方案..再次感谢 –

+0

您需要添加ns.SalesMonth = ns2.SalesMonth这会使'201201'和'201205'之间的NS2.SalesMonth变为冗余,但应该强制更正行为。 – dandcg