SELECT *,SUM(dayMoney) FROM DianTuGP INNER JOIN 
      GangWei ON DianTuGP.gw_id = GangWei.gw_id 
      WHERE (DianTuGP.d_date >= :date1) and (DianTuGP.d_date <= :date2)  GROUP BY DianTuGP.gp_id
提示有错误,‘列DianTuGP.gh在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在GROUP BY子句中’请问这是为什么呀,

解决方案 »

  1.   

    SELECT 后面显示的列必须满足下面的条件,
    要么在聚合函数中,如:dayMoney在SUM(dayMoney)
    要么在GROUP BY子句中,如GROUP BY DianTuGP.gp_id
      

  2.   

    SELECT DIANTUGP.GP_ID,SUM(dayMoney) FROM DianTuGP INNER JOIN 
          GangWei ON DianTuGP.gw_id = GangWei.gw_id 
          WHERE (DianTuGP.d_date >= :date1) and (DianTuGP.d_date <= :date2)  GROUP BY DianTuGP.gp_id
      

  3.   

    如果没有猜错,楼主的DianTuGP表,第一列为gp_id,第二列就是gh
    把列DianTuGP.gh加到聚合函数或者GROUP BY子句中后,还会提示下一列“在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在GROUP BY子句中”,直到所有列满足条件为止
      

  4.   

    当你使用了GROUP BY 的时候你的select的字段必须出现在GROUP BY的后面的
    或者你select的字段是聚合函数的