2013-08-01 133 views
0

Im获取无效列名称'Average'。当Im写入没有别名时它的工作。但我有太多的条件。case语句中的列名无效

SELECT 
         ST_LAWERP_PERFORMANCE_EVALUATION_ENTRIES.EMPLOYEEID, 
         Employees.EMPLOYEENAMESURNAMEFORMAT AS LastFirstName, 


         (CAST(SUM(EVALUATION) AS FLOAT) 
         /
         (SELECT TOP 1 
           COUNT(*) 
           FROM ST_LAWERP_PERFORMANCE_EVALUATION_ENTRIES 
           WHERE DATE BETWEEN '2013-01-01' AND '2013-12-12' AND TYPE=2 AND SUPERVISORID=1020 GROUP BY EmployeeID)) AS AVERAGE, 
         CASE WHEN AVERAGE=1 

         THEN 'GOOD' END AS EVALUATION 



       FROM ST_LAWERP_PERFORMANCE_EVALUATION_ENTRIES INNER JOIN Employees 
       ON ST_LAWERP_PERFORMANCE_EVALUATION_ENTRIES.EMPLOYEEID=Employees.EmployeeID 
       WHERE DATE BETWEEN '2013-01-01' AND '2013-12-12' AND TYPE=2 AND ST_LAWERP_PERFORMANCE_EVALUATION_ENTRIES.SUPERVISORID=1020 AND ACTIVESTATUS=1 

           GROUP BY 
           ST_LAWERP_PERFORMANCE_EVALUATION_ENTRIES.EMPLOYEEID, 
           EMPLOYEENAMESURNAMEFORMAT 

回答

1

试试这个

SELECT *,case when average =1 then 'good' end as evaluation from(
select 
ST_LAWERP_PERFORMANCE_EVALUATION_ENTRIES.EMPLOYEEID, 
        Employees.EMPLOYEENAMESURNAMEFORMAT AS LastFirstName, 


        (CAST(SUM(EVALUATION) AS FLOAT) 
        /
        (SELECT TOP 1 
          COUNT(*) 
          FROM ST_LAWERP_PERFORMANCE_EVALUATION_ENTRIES 
          WHERE DATE BETWEEN '2013-01-01' AND '2013-12-12' AND TYPE=2 AND SUPERVISORID=1020 GROUP BY EmployeeID)) AS AVERAGE 


      FROM ST_LAWERP_PERFORMANCE_EVALUATION_ENTRIES INNER JOIN Employees 
      ON ST_LAWERP_PERFORMANCE_EVALUATION_ENTRIES.EMPLOYEEID=Employees.EmployeeID 
      WHERE DATE BETWEEN '2013-01-01' AND '2013-12-12' AND TYPE=2 AND ST_LAWERP_PERFORMANCE_EVALUATION_ENTRIES.SUPERVISORID=1020 AND ACTIVESTATUS=1 

          GROUP BY 
          ST_LAWERP_PERFORMANCE_EVALUATION_ENTRIES.EMPLOYEEID, 
          EMPLOYEENAMESURNAMEFORMAT) as subquery 
+0

感谢您的答复。我只是在括号后加上select,它起作用。 – cutefather

+0

所以我的回答是错误的? – zxc

+0

我在你的answer.SELECT *中添加select,如果average = 1,那么'good'结束评价( ** select **)。你的回答没有错。 – cutefather