select OrderID,max(PeriodID),
TotalPopCount   + v_MonthActualIssueTimes Into v_TotalPopCount   From adms_OrderMonthBalance  Where OrderID=i_OrderID  Group By OrderID Having  max(PeriodID)<i_Period;
试试可以吗?

解决方案 »

  1.   

    先不管分组函数写没写在where里面
    你有max没有group by对吗?
    呵呵
    楼主还是把想要做什么说出来!
    大家重新写一个SQL比较简单!
      

  2.   

    1.TotalPopCount   + v_MonthActualIssueTimes Into v_TotalPopCount
    2. Having  max(PeriodID)<i_Period;
    含义不清,可否分开写.
      

  3.   

    用having+group by就可以把分组函数写在条件里。
    具体的说,那也不是条件,是跟在GROUP子句后面的,而不是WHERE子句。
    但是用了group by,就要求TotalPopCount必须使用分组函数。
    这才是根本错误原因。
    需要在TotalPopCount   + v_MonthActualIssueTimes外加函数,
    是sum,avg,还是max,min??另外,按你的sql意思,按orderid分组并要求该组中最大periodid小于
    某参数i_periodid,这样有可能选择不到记录,需要做些处理。
      

  4.   

    Select max(TotalPopCount + v_MonthActualIssueTimes) Into v_TotalPopCount   From adms_OrderMonthBalance  Where OrderID=i_OrderID  Group By OrderID Having  max(PeriodID)<i_Period;OK
      

  5.   

    max(PeriodID)<i_Period   --当然错,它会报不是分组格式
      

  6.   

    (select max(periodId) from ... where .. ) < i_Period