新手!该列没有包含在聚合函数或GROUP BY 子句中不着调如何避免。

新手求救!!该列没有包含在聚合函数或GROUP BY 子句中不着调如何处理。。。
select id,name,COUNT(course_id)
from 
(select instructor.ID,name,course_id
from instructor left join teaches on instructor.ID= teaches.ID)as a
group by  id
出错:选择列表中的列'a.name' 无效,因为该列没有包含在聚合函数或GROUP BY 子句中。
删掉了id,改为以name聚集,则可以进行分组。



另外在MIicroslft SQL Server 中使用外连接,如:
select*
from department left outer join instructor on department.dept_name=instructor.dept_name
结果出现两列dept_name ,该如何使用SQL连接语句。


MIicroslft SQL Server 有没有类似于Oracle  中decode函数的函数,怎么使用?新手!该列没有包含在聚合函数或GROUP BY 子句中不着调如何避免。
------解决方案--------------------
1.GROUP BY后面必须包含除了使用聚合函数的其他属性列 就你的语句来说的话 必须要GROUP BY ID,NAME

2.select*
 from department left outer join instructor on department.dept_name=instructor.dept_name
有两个一样的列的话 需要区分的话 就将所需要查询的列列出来 然后用AS 来取名别
比如 
select A.dept_name AS Adept_name,B.dept_name AS Bdept_name
 from department AS A  left outer join instructor AS B on A.dept_name=iB.dept_name

3.在SQL SERVER里面行列转换 用的是 MAX(CASE WHEN ...)
这个网上例子很多 你可以去BAIDU一下
------解决方案--------------------
我想把天气属性中,晴天改为A,阴天改为B,雨天改为C。不是直接用update改。是查询的时候显示成这样。请问怎么改啊。

select case 天气 when '晴天' then 'A' when '阴天' then 'B' else 'C' end as 天气 from 表