2012-05-30 29 views
0

我有兩個表,JobTableEmployeeTable數據如下:如何在組聲明中獲取單個行值?

EmployeeTable中:

EmpId Salary 
1   10 
2   20 
3   30 
4   40 
5   50 
6   60 

JobTable:

JobId EmpId 
A   1 
A   2 
B   3 
B   4 
C   5 
C   6 

我需要一個SQL語句將返回員工的EmpId每個工作的最低工資。

回答

0

嗯,給這一個一個鏡頭:

SELECT st.EmpID, min(st.salary) 
FROM SalaryTable st INNER JOIN JobTable jt ON st.EmpID=jt.EmpID 
WHERE jt.JobID = 'A' 
GROUP BY st.EmpID 
1

您可以使用RANK()功能是這樣的:

WITH ranked AS (
    SELECT 
    j.JobId, 
    e.EmpId, 
    e.Salary, 
    RANK() OVER (PARTITION BY j.JobId ORDER BY e.Salary) AS rnk 
    FROM JobTable j 
    INNER JOIN EmployeeTable e ON j.EmpId = e.EmpId 
) 
SELECT 
    JobId, 
    EmpId, 
    Salary, 
FROM ranked 
WHERE rnk = 1