当前位置: 代码迷 >> Sql Server >> 这个无效的列名,咋回事
  详细解决方案

这个无效的列名,咋回事

热度:25   发布时间:2016-04-24 09:37:36.0
这个无效的列名,怎么回事?
select cc1.empno as empno,left(convert(varchar(10),cc1.yymmdd,112),6) as yymm,sum(cc1.times)
  from
   (select aa1.empno as empno,aa1.yymmdd as yymmdd,sum(aa1.times+aa1.addworktimes) as times  from hr_leavedetail aa1,hr_leavemaster bb1 
   where aa1.id=bb1.id and bb1.leavetype='病假'
   group by aa1.empno,aa1.yymmdd ) cc1 
  group by empno,yymm
提示:
Server: Msg 207, Level 16, State 3, Line 1
Invalid column name 'yymm'.
按我的理解是这个列名是可以成立的,这是怎么回事??
------解决思路----------------------
SELECT 大约是倒数第二步,GROUP BY的时候还没有呢
ORDER BY 的时候才使用得了
------解决思路----------------------
改成
select cc1.empno as empno,left(convert(varchar(10),cc1.yymmdd,112),6) as yymm,sum(cc1.times)
   from
    (select aa1.empno as empno,aa1.yymmdd as yymmdd,sum(aa1.times+aa1.addworktimes) as times  from hr_leavedetail aa1,hr_leavemaster bb1 
    where aa1.id=bb1.id and bb1.leavetype='病假'
    group by aa1.empno,aa1.yymmdd ) cc1 
   group by empno,left(convert(varchar(10),cc1.yymmdd,112),6) 

------解决思路----------------------
把 left(convert(varchar(10),cc1.yymmdd,112),6) as yymm 放在子查询中去。

或者再外层再套一层 select ,就是有点麻烦 。
  相关解决方案