SELECT dbo.pubac.*, dbo.publishersmanagement.pubnamech AS Expr2, 
      dbo.submission.shuliang AS Expr3, dbo.cbase.ccode AS Expr4
FROM dbo.cbase INNER JOIN
      dbo.pubac ON dbo.cbase.cbid = dbo.pubac.bookid INNER JOIN
      dbo.submission ON dbo.pubac.bookid = dbo.submission.bookid INNER JOIN
      dbo.publishersmanagement ON 
      dbo.submission.publisher = dbo.publishersmanagement.pubid AND 
      dbo.cbase.cpublisher = dbo.publishersmanagement.pubnamech
WHERE (dbo.pubac.salesim = 'SOLD') AND (CHARINDEX('/BK', dbo.cbase.ccode) > 0) AND 
      (CHARINDEX('/SW', dbo.cbase.ccode) = 0)
GROUP BY dbo.publishersmanagement.pubnamech
HAVING (SUM(dbo.submission.shuliang) < 2)
提示列即不包涵在聚合函数中,也不包涵在GROUP BY子句中

解决方案 »

  1.   

    目的就是查询出submission表中相同publishersmanagement.pubnamech 的shuliang的总和
      

  2.   

    查询的字段如果不出现在聚合函数里就需要出现在group by 后面
    要不就不要出现在查询字段内
      

  3.   

    错误提示很明显啦如果你用了 group by , 那么 select 中出现的列, 除了 group by 中的列, 其他列都应该在聚合函数中
      

  4.   

    那我要显示pubac中很多的字段,那不是都要把他们放到group by当中???
      

  5.   

    select *,t.shuliang from tb  join (
    select b.pubnamech,SUM(a.shuliang) as shuliang from 
    submission a join publishersmanagement b on a.publisher=b.pubid
    group by b.pubnamech
    having SUM(a.shuliang) < 2)t on tb.id=t.pubnamech先聚合,后连表
      

  6.   

    按照你们的要求写了很多,在查询分析器中查询出结果
    但放到网页上去执行报错SELECT dbo.pubac.*,dbo.publishersmanagement.pubnamech
    FROM dbo.cbase INNER JOIN 
          dbo.pubac ON dbo.cbase.cbid = dbo.pubac.bookid INNER JOIN 
          dbo.submission ON dbo.pubac.bookid = dbo.submission.bookid INNER JOIN 
          dbo.publishersmanagement ON 
          dbo.submission.publisher = dbo.publishersmanagement.pubid AND 
          dbo.cbase.cpublisher = dbo.publishersmanagement.pubnamech 
    WHERE (dbo.pubac.salesim = 'SOLD') AND (CHARINDEX('/BK', dbo.cbase.ccode) > 0) AND 
          (CHARINDEX('/SW', dbo.cbase.ccode) = 0) 
    GROUP BY dbo.publishersmanagement.pubnamech,dbo.pubac.title,dbo.pubac.author,dbo.pubac.authorPhoto,dbo.pubac.proprietorname,dbo.pubac.datereceived,dbo.pubac.bookid,dbo.pubac.[format],dbo.pubac.shcopy,dbo.pubac.tcopy,dbo.pubac.bcopy,dbo.pubac.availability,dbo.pubac.salesim,dbo.pubac.salecom,dbo.pubac.chsum,dbo.pubac.ensum,dbo.pubac.fchapter,dbo.pubac.proposal,dbo.pubac.menus
    ,dbo.pubac.prizeinfo,dbo.pubac.authorinfo,dbo.pubac.covername,dbo.pubac.cate,dbo.pubac.intraneta,dbo.pubac.dateup,dbo.pubac.re,dbo.pubac.gg,dbo.pubac.isbn,dbo.pubac.price,dbo.pubac.series,dbo.pubac.yuanpublisher,dbo.pubac.copyright,dbo.pubac.pubdate,dbo.pubac.coin,dbo.pubac.ppa,dbo.pubac.ours,dbo.pubac.test,dbo.pubac.addaddr,dbo.pubac.titlec,dbo.pubac.gscopy1,dbo.pubac.gscopy2
    ,dbo.pubac.gscopy3,dbo.pubac.gtcopy1,dbo.pubac.gtcopy2,dbo.pubac.gtcopy3,dbo.pubac.gbcopy1,dbo.pubac.gbcopy2,dbo.pubac.gbcopy3,dbo.pubac.datereceived12,dbo.pubac.datereceived13,dbo.pubac.datereceived21,dbo.pubac.datereceived22,dbo.pubac.datereceived23,dbo.pubac.datereceived31,dbo.pubac.datereceived32,dbo.pubac.datereceived33,dbo.pubac.format1,dbo.pubac.format2,dbo.pubac.format3
    ,dbo.pubac.format4,dbo.pubac.format5,dbo.pubac.format6,dbo.pubac.format7,dbo.pubac.format8,dbo.pubac.format9,dbo.pubac.btj,dbo.pubac.star,dbo.pubac.inns,dbo.pubac.yues,dbo.pubac.bakup,dbo.pubac.bakup2,dbo.pubac.bakup3,dbo.pubac.puta,dbo.pubac.putb,dbo.pubac.div,dbo.pubac.southkorea,dbo.submission.shuliang
    HAVING (sum(isnull(cast (dbo.submission.shuliang as int),0))< 2) 
    报这个错
    Microsoft VBScript 运行时错误 错误 '800a01a8' 缺少对象: ''
      

  7.   

    Microsoft VBScript 运行时错误 错误 '800a01a8' 缺少对象: ''
    ------------------------ 这个不关 SQL 语句的事吧? 都说了是缺少对象了
    你该不会直接把这估脚本存储为vbs文件来执行吧?