查询返回多个错误在SQL Server 2008
问题描述:
Emp_id Emp_Name Dept_ID Dept_Name salary
1 a AA IT 2000 100
2 b AA IT 3000 200
3 c AA IT 4000 300
4 d BB HR 1000 400
5 e BB HR 2000 500
6 f BB HR 3000 600
7 g BB HR 4000 700
8 h CC FI 2500 800
9 i CC FI 3500 900
这是我的表structure.I想找出emp_id
& dept_id
其薪水比其组平均薪水高。我已经尝试了SQL查询,但正显示出没有错误味精难以错误查询返回多个错误在SQL Server 2008
select Emp_id
from dbo.Sheet1$
where Salary >= (select AVG(Salary) from dbo.Sheet1$ group by Dept_ID)
答
select Emp_id,Dept_ID from (
select Emp_id, Emp_Name,
avg(salary) over (partition by dept_id) avg_sal
from yourtable
) a
where salary > avg_sal
答
,但有一点我可以告诉你:你的第二个选择中,AVG通过,因此它可以返回多个值进行分组,因此>是不是有效的运营商。
答
试试这个,
SELECT Emp_id
FROM dbo.Sheet1$ A
where A.Salary >= (SELECT AVG(B.Salary) FROM dbo.Sheet1$ B WHERE B.Dept_ID=A.Dept_ID)
答
也许是这样的:
;WITH CTE
AS
(
SELECT
tbl.Emp_id,
AVG(salary) OVER(PARTITION BY tbl.Dept_ID) AS avgSalery
FROM
dbo.Sheet1$ AS tbl
)
SELECT
*
FROM
dbo.Sheet1$ AS tbl
JOIN CTE
ON CTE.Emp_id=tbl.Emp_id
AND tbl.salary>=CTE.avgSalery
欢迎*上:如果您发布的代码,XML或数据样本,** **请那些突出线条在文本编辑器中单击编辑器工具栏上的“代码示例”按钮(“{}”),以良好地格式化和语法突出显示它! – 2012-03-12 07:13:42
和**你得到了什么错误?!?我们无法看到您的屏幕,也无法阅读您的想法 - 请**发布您获得的完整且准确的错误消息! – 2012-03-12 07:14:50