2012-12-20 121 views
1
select E.Job_ID, count(*), max(Employee_Salary) as kos, avg(Employee_Salary) 
    from Employee E 
    inner join JOB D on E.Job_ID = D.Job_ID 
    group by E.Job_ID 

我要订购由D.Functio我的结果,但我有这个错误SQL查询错误

Msg 8120, Level 16, State 1, Line 1 
Column 'JOB.Functio' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. 
+2

这是完整的查询吗? – imreal

回答

1

包括在SelectGroup by

+0

感谢您的回答。这很有帮助 – apkos99

+0

@ apkos99:我的荣幸! – Kaf

2

有什么不清楚的错误消息?您正尝试按未汇总的内容进行排序。下面是一种解决方案:

order by max(d.Functio) 

问题是别名“job”未知。您需要使用分配给表格的“d”。

这应该工作,因为大概有一个job.Functio每个工作id。另一种解决方法是改变group by到:

group by e.Job_ID, d.Job.Functio 
1

你想将它添加到您的GROUP BY如果它是一个描述性的列(工作职能?)

select E.Job_ID, count(*), max(Employee_Salary) as kos, avg(Employee_Salary) 
    from Employee E 
    inner join JOB D on E.Job_ID = D.Job_ID 
    group by E.Job_ID, D.Functio 
    order by D.Functio 

否则在您需要申请订货像分钟(),MAX(),AVG()等的聚集函数