SELECT dbo.NSCalender.CalDate, MAX(dbo.NSCalender.NSFY) AS nsfy, 
      MAX(dbo.NSCalender.NSPD) AS nspd, MAX(dbo.NSCalender.NSWW) AS nsww, 
      dbo.NSCalender.NSD
FROM dbo.NSCalender INNER JOIN
      dbo.Rundate ON 
      MAX(dbo.NSCalender.NSFY + dbo.NSCalender.NSPD + dbo.NSCalender.NSWW) 
      < dbo.Rundate.NSFY + dbo.Rundate.NSPD + dbo.Rundate.NSWW
GROUP BY dbo.NSCalender.CalDate, dbo.NSCalender.NSFY, dbo.NSCalender.NSPD, 
      dbo.NSCalender.NSWW, dbo.NSCalender.NSD错误提示:聚合不能出现在ON子句中,除非该子句位于Having子句或选择列表所包含的字查询中,并且所聚合的列都是外部引用

解决方案 »

  1.   

    把on 改成havingSELECT dbo.NSCalender.CalDate, MAX(dbo.NSCalender.NSFY) AS nsfy, 
          MAX(dbo.NSCalender.NSPD) AS nspd, MAX(dbo.NSCalender.NSWW) AS nsww, 
          dbo.NSCalender.NSD
    FROM dbo.NSCalender INNER JOIN
          dbo.Rundate 
    GROUP BY dbo.NSCalender.CalDate, dbo.NSCalender.NSFY, dbo.NSCalender.NSPD, 
          dbo.NSCalender.NSWW, dbo.NSCalender.NSD
    having MAX(dbo.NSCalender.NSFY + dbo.NSCalender.NSPD + dbo.NSCalender.NSWW) 
          < dbo.Rundate.NSFY + dbo.Rundate.NSPD + dbo.Rundate.NSWW
      

  2.   

    inner join 少了连接字段
    如on dbo.NSCalender.ooxx=dbo.Rundate.xxoo
      

  3.   

    先连接好,再用MAX
    不能直接用MAX连接。