select * from 
(select  a.doccode,a.refcode,b.oldcode,b.boxcode,sum(b.basedigit) as basedigit from YangPin_PickHd a inner join YangPin_Pickitem b on a.doccode=b.doccode group by a.refcode,b.oldcode,b.boxcode) bb inner join (select  a.doccode,a.refcode,b.oldcode,b.boxcode,sum(b.basedigit) as basedigit from YangPin_dochd a inner join YangPin_docitem b on a.doccode=b.doccode  group by  a.refcode,b.oldcode,b.boxcode) cc 
    on bb.doccode=cc.doccode  
--==================================上面这个语句是错误的,doccode没有包含在group by 中=====
各位大侠给个意见。谢谢
--========================
--注:如下,则有多行值返回。
select  a.refcode,b.oldcode,b.boxcode,sum(b.basedigit) as basedigit from YangPin_PickHd a inner join YangPin_Pickitem b on a.doccode=b.doccode group by a.refcode,b.oldcode,b.boxcode select  a.refcode,b.oldcode,b.boxcode,sum(b.basedigit) as basedigit from YangPin_dochd a inner join YangPin_docitem b on a.doccode=b.doccode  group by  a.refcode,b.oldcode,b.boxcode--=============================写成如下肯定也错误:
select  a.doccode,  (select sum(b.basedigit) from YangPin_PickHd a inner join YangPin_Pickitem b on a.doccode=b.doccode group by a.refcode,b.oldcode,b.boxcode)  as basedigit from YangPin_PickHd a inner join YangPin_Pickitem b on a.doccode=b.doccode 

解决方案 »

  1.   


    select * from 
    (select  min(a.doccode) as doccdoe,a.refcode,b.oldcode,b.boxcode,sum(b.basedigit) as basedigit 
    from YangPin_PickHd a inner join YangPin_Pickitem b on a.doccode=b.doccode 
    group by a.refcode,b.oldcode,b.boxcode) bb inner join 
      (select  min(a.doccode) as doccdoe,a.refcode,b.oldcode,b.boxcode,sum(b.basedigit) as basedigit 
       from YangPin_dochd a inner join YangPin_docitem b on a.doccode=b.doccode  
       group by  a.refcode,b.oldcode,b.boxcode) cc 
        on bb.doccode=cc.doccode  
      

  2.   

    这样会不会有问题呢?我doccode唯一,但里面其他的都不唯一,会不会查出来的有问题?我原来也和楼上的差不多,只是写成了max(a.doccode)。今天晚上测试才发现有问题。也可能是其他地方有问题。先谢了