簡體   English   中英

查詢在sql server 2008中返回多個錯誤

[英]Query returning multiple errors in 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

這是我的表結構。我想找出工資大於其組中平均工資的emp_iddept_id 我嘗試過SQL查詢,但顯示錯誤

select Emp_id 
from dbo.Sheet1$ 
where Salary >= (select AVG(Salary) from dbo.Sheet1$ group by Dept_ID)

嘗試這個,

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

沒有錯誤消息很難,但有一點我可以告訴你:你的第二個選擇,AVG被分組,所以它可以返回多個值,所以>不是一個有效的運算符。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM