I have a column EmpID and Salary. I want to get the updated salary each EmpID.
FIGURE 1 :
| ID | EMPID | Salary |
|---|---|---|
| 1 | 00000 | 75000 |
| 2 | 00000 | 80000 |
| 3 | 00001 | 75000 |
| 4 | 00001 | 90000 |
| 5 | 00001 | 91000 |
| 6 | 00010 | 50000 |
| 7 | 00010 | 60000 |
| 8 | 00010 | 70000 |
This is my initial query that I created with specific EMPID 00000 :
Select DISTINCT EmpID,Salary from Table1 as t1 WHERE Salary != '0.00' AND EXISTS (SELECT TOP 1 Salary ,EmpID From Table1 where Table1.EmpID = t1 ORDER BY ID DESC) AND EmpID = '00000'
The output that I get is still the same as Figure 1.
The output must be in distinct in EmpID with the updated salary.
/****** Sub query example ******/ /****** This is the output I would like to display ******/ Select TOP 1 Salary FROM Table1 Where EMPID = '00000' ORDER BY ID DESC Select TOP 1 Salary FROM Table1 Where EMPID = '00001' ORDER BY ID DESC Select TOP 1 Salary FROM Table1 Where EMPID = '00010' ORDER BY ID DESC
FIGURE 2 :
| ID | EMPID | Salary |
|---|---|---|
| 1 | 00000 | 80000 |
| 2 | 00001 | 91000 |
| 3 | 00010 | 70000 |
Advertisement
Answer
what are you looking for can be achieved by group by as follows, however chosing your desired ID remain issue but it has been acheived by row_number
SELECT Row_number()
OVER (
ORDER BY empid) AS ID,
empid,
Max(salary) Salary
FROM table1
GROUP BY empid
in addition you can use Row_number and Sub-query in order to distinguish new changes.
SELECT ROW_NUMBER() OVER (ORDER BY EmpID) AS ID,EmpID, Salary
FROM (SELECT ID,
empid,
salary,
Row_number()
OVER (
partition BY empid
ORDER BY salary DESC) AS RowNumber
FROM table1) T
WHERE rownumber = 1