SELECT
    HEAD.PNO PNO, 
    SUM(MEI.KOSI) SI,
    SUM(MEI.AMOUNT) AMOUNT
FROM
    AHEAD HEAD      
     LEFT JOIN
    BMEI MEI        
     ON      
        HEAD.PAYYOTENO = MEI.PAYYOTENO
    LEFT JOIN
    MSMASTER MMASTER 
    ON
        MEI.CODE = MMASTER.KEY2
        AND MMASTER.KBN = 'AA'
        AND MMASTER.EY1 = 'NAME'
WHERE
    HEAD.COMPANYID = 'T0'
    AND HEAD.PAYDAY = '20070331'
    AND HEAD.VALIDSTATUS = '0'
GROUP BY
    PAYNO如上面的SQL,为什么这样写就执行不过,但把‘PAYNO’换成‘HEAD.PNO’就可以执行呢?

解决方案 »

  1.   

    是不是其他的表也有PAYNO这个字段呢?
      

  2.   

    列别名只能出现在 order by 子句中,where 和 group by 子句中都不能使用列别名。Oracle SQL 的语法就是这样。
      

  3.   

    恩,其他表也有PNO这个字段名...但别名不能在WHERE里用吗??/
      

  4.   

    如上面的SQL,为什么这样写就执行不过,但把‘PAYNO’换成‘HEAD.PNO’就可以执行呢?============================================SELECT 中出现的字段(除了使用组函数的字段之外)必须出现在GROUP BY 语句里
      

  5.   

    order   by   是可以用别名的。   
    group   by   就不可能用别名。
    除非嵌套一层sql