我有一个表,原始结构是这样的:
MName       MNumber     MName_C  MNumber_C DeptName Demand   PlanMainId   MPSNumber_C
80442/AN/D  80442/AN/D  PE胶(薄) PT-10E-ND 生产车间 3.129000 20060700006  LS-1850/06 80442/AN/D  80442/AN/D  PE胶(薄) PT-10E-ND 生产车间 3.129000 20060700006  LS-1850/06
80845/AN/DB 80845/AN/DB PE胶(厚) PT-12E-ND 生产车间  .588000 20060700006  LS-1850/06
82350/AN/DB 82350/AN/DB PE胶(厚) PT-12E-ND 生产车间  .546000 20060700006  LS-1850/06
P306/VE/D    P306/VE/D   PE胶(厚) PT-12E-ND 生产车间 17.70000 20060700002  LS-1839/06
80845/AN/DB 80845/AN/DB PE胶(厚) PT-12E-ND 生产车间  .588000 20060700006  LS-1850/06
82350/AN/DB 82350/AN/DB PE胶(厚) PT-12E-ND 生产车间  .546000 20060700006  LS-1850/06
P306/VE/D    P306/VE/D   PE胶(厚) PT-12E-ND 生产车间 17.70000 20060700002  LS-1839/06我想用SQL语句我想得到以下的内容:
MName       MNumber     MName_C  MNumber_C DeptName Demand   PlanMainId   MPSNumber_C
80442/AN/D  80442/AN/D  PE胶(薄) PT-10E-ND 生产车间 6.258    20060700006  LS-1850/06 80442/AN/D  80442/AN/D  PE胶(薄) PT-10E-ND 生产车间 6.258    20060700006  LS-1850/06
80845/AN/DB 80845/AN/DB PE胶(厚) PT-12E-ND 生产车间 2.268    20060700006  LS-1850/06
82350/AN/DB 82350/AN/DB PE胶(厚) PT-12E-ND 生产车间 2.268    20060700006  LS-1850/06
P306/VE/D    P306/VE/D   PE胶(厚) PT-12E-ND 生产车间 35.4     20060700002  LS-1839/06
80845/AN/DB 80845/AN/DB PE胶(厚) PT-12E-ND 生产车间 2.268    20060700006  LS-1850/06
82350/AN/DB 82350/AN/DB PE胶(厚) PT-12E-ND 生产车间 2.268    20060700006  LS-1850/06
P306/VE/D    P306/VE/D   PE胶(厚) PT-12E-ND 生产车间 35.4     20060700002  LS-1839/06
我试过用以下的SQL语句来执行,但是出现了有点数据不准确和行数变化了.
SELECT dbo.MRP_V_DepDemandList.MName, dbo.MRP_V_DepDemandList.MNumber, 
      dbo.MRP_V_DepDemandList.MName_C, dbo.MRP_V_DepDemandList.MNumber_C, 
      dbo.MRP_V_DepDemandList.DeptName, D.DemandNumber, 
      dbo.MRP_V_DepDemandList.PlanMainID, 
      dbo.MRP_V_DepDemandList.MPSNumber_C, 
      dbo.MRP_V_DepDemandList.DeptName_C
FROM dbo.MRP_V_DepDemandList LEFT OUTER JOIN
          (SELECT PlanMainId, MNumber_C, SUM(DemandNumber) 
               AS DemandNumber
         FROM dbo.MRP_V_DepDemandList
         GROUP BY PlanMainId, MNumber_C) D ON 
      dbo.MRP_V_DepDemandList.MNumber_C = D.MNumber_C
可能以上的SQL语句写得有点问题吧。望高人指点。以上的SQL语句执行的结果是这样的:
MName       MNumber     MName_C  MNumber_C DeptName Demand  PlanMainId    MPSNumber_C
80442/AN/D  80442/AN/D  PE胶(薄) PT-10E-ND 生产车间 6.258   20060700006   LS-1850/06 
80442/AN/D  80442/AN/D  PE胶(薄) PT-10E-ND 生产车间 6.258   20060700006   LS-1850/06 
80845/AN/DB 80845/AN/DB PE胶(厚) PT-12E-ND 生产车间 35.4    20060700006   LS-1850/06 
80845/AN/DB 80845/AN/DB PE胶(厚) PT-12E-ND 生产车间 2.268   20060700006   LS-1850/06 
82350/AN/DB 82350/AN/DB PE胶(厚) PT-12E-ND 生产车间 35.4    20060700006   LS-1850/06 
82350/AN/DB 82350/AN/DB PE胶(厚) PT-12E-ND 生产车间 2.268   20060700006   LS-1850/06 
P306/VE/D   P306/VE/D   PE胶(厚) PT-12E-ND 生产车间 35.4    20060700002   LS-1839/06 
P306/VE/D   P306/VE/D   PE胶(厚) PT-12E-ND 生产车间 2.268   20060700002   LS-1839/06 
80845/AN/DB 80845/AN/DB PE胶(厚) PT-12E-ND 生产车间 35.4    20060700006   LS-1850/06 
80845/AN/DB 80845/AN/DB PE胶(厚) PT-12E-ND 生产车间 2.268   20060700006   LS-1850/06 
82350/AN/DB 82350/AN/DB PE胶(厚) PT-12E-ND 生产车间 35.4    20060700006   LS-1850/06 
82350/AN/DB 82350/AN/DB PE胶(厚) PT-12E-ND 生产车间 2.268   20060700006   LS-1850/06 
P306/VE/D    P306/VE/D   PE胶(厚) PT-12E-ND 生产车间 35.4    20060700002   LS-1839/06 
P306/VE/D   P306/VE/D   PE胶(厚) PT-12E-ND 生产车间 2.268   20060700002   LS-1839/06 
有哪里看不懂的请问我吧。谢谢~

解决方案 »

  1.   

    select
        MName     ,
        MNumber   ,
        MName_C   ,
        MNumber_C ,
        DeptName  ,
        Demand=(select sum(Demand) from MRP_V_DepDemandList where PlanMainId=A.PlanMainId and MNumber_C=A.MNumber_C),
        PlanMainId,
        MPSNumber_C
    from
        MRP_V_DepDemandList A
      

  2.   

    我想把相同的PLANMAINID下相同的MNumber_C的DEMAND的数字相加起来而不影响行数
      

  3.   

    SELECT dbo.MRP_V_DepDemandList.MName, dbo.MRP_V_DepDemandList.MNumber, 
          dbo.MRP_V_DepDemandList.MName_C, dbo.MRP_V_DepDemandList.MNumber_C, 
          dbo.MRP_V_DepDemandList.DeptName, D.DemandNumber, 
          dbo.MRP_V_DepDemandList.PlanMainID, 
          dbo.MRP_V_DepDemandList.MPSNumber_C, 
          dbo.MRP_V_DepDemandList.DeptName_C
    FROM dbo.MRP_V_DepDemandList LEFT OUTER JOIN
              (SELECT PlanMainId, MNumber_C, SUM(DemandNumber) 
                   AS DemandNumber
             FROM dbo.MRP_V_DepDemandList
             GROUP BY PlanMainId, MNumber_C) D ON 
          dbo.MRP_V_DepDemandList.MNumber_C = D.MNumber_C and dbo.MRP_V_DepDemandList.PlanMainId = D.PlanMainId是不是少了一条判断
      

  4.   

    仔細看了下,原始數據和你想要的結果也就demand這個欄位不同吧.
    demand要怎麼算?
    另外,我看你的select中,有9個欄位,怎麼結果是8個欄位呢?
      

  5.   

    仔細看了下,原始數據和你想要的結果也就demand這個欄位不同吧.
    demand要怎麼算?
    另外,我看你的select中,有9個欄位,怎麼結果是8個欄位呢?
    哦。。不好意思。哪个没用的,忘记去掉了
      

  6.   

    就是dbo.MRP_V_DepDemandList.PlanMainId = D.PlanMainId
      

  7.   

    select A.MName,A.MNumber,A.MName_C,A.MNumber_C,A.DeptName
    ,B.Demand,A.PlanMainId,A.MPSNumber_C  
    from dbo.MRP_V_DepDemandList A
    left join (select PlanMainId,sum(demand) as demand from dbo.MRP_V_DepDemandList group by PlanMainId) B
    on A.PlanMainId=B.PlanMainId
      

  8.   

    就是dbo.MRP_V_DepDemandList.PlanMainId = D.PlanMainId
    这个怎么加上去吖?
      

  9.   

    playwarcraft 是正确的, 不写了
      

  10.   

    select A.MName,A.MNumber,A.MName_C,A.MNumber_C,A.DeptName
    ,B.Demand,A.PlanMainId,A.MPSNumber_C  
    from dbo.MRP_V_DepDemandList A
    left join (select PlanMainId,sum(demand) as demand from dbo.MRP_V_DepDemandList group by PlanMainId) B
    on A.PlanMainId=B.PlanMainId
    这个不行吖。。DEMAND加出来的数量好大吖
      

  11.   

    哈哈。。我用子陌的方法测试成功啦。。太感谢你啦。。在这里现上我的KISS。。哈哈-_-Y
      

  12.   

    IES是大连IT猎头行业强势企业,致力于IT行业内的猎头服务。公司客户群主要是世界500强IT企业及国内优秀的大型软件研发及外包企业。公司在同行业中有良好的信誉和口碑,在众多500强客户中取得高度评价。现受委托企业高薪招聘以下职位:●世界500强IT企业(全日资企业,自主研发,非外包,工作地点:大连)
     java 方向
    职位:应用软件PL / PM
    人数:2人
    学历:大学本科以上
    外语:英语四级、日语国际二级
    经验:具有3/5年以上Web,Java,Struts相关工作经验,要求担当过PL或Sub-LeaderC / C++ 方向
    职位:应用软件PL / PM 高级程序员
    人数:8人
    学历:大学本科以上
    外语:英语四级、日语国际二级
    经验:具有3/5年以上C / C++相关工作经验,要求担当过PL或Sub-Leader
    相关待遇:
    1 5险1金(40%住房公积金:个人15%  公司25%)
    2 加班费(按照国家规定给与相应加班费)
    3 每年年终奖(3月工资左右)
    4 职务津贴 (PL:1000 Spl:500)
    5 每年一次调薪 (按百分比,工资越高调动越大)
    6 取暖费 ( 国家规定 )
    7  带薪休假● 世界500强IT企业(全日资企业,外包,工作地点:大连 / 东京)
    月薪不低于30万日元
      java 方向
    职位:SE 
    人数:不限
    学历:大学本科以上
    外语:日语国际二级相当
    经验:具有至少1年以上Java对日项目相关工作经验C / C++ 方向
    职位:SE
    人数:不限
    学历:大学本科以上
    外语:日语国际二级相当
    经验:具有至少1年以上C / C++对日项目相关工作经验
    .NET 方向
    职位:SE
    人数:不限
    学历:大学本科以上
    外语:日语国际二级相当
    经验:具有至少1年以上.net对日项目相关工作经验人力资源顾问:杨小姐
    Email:[email protected]
    Tel:0411-84509856/84509836
    Mob:13236944206