2015-05-25 58 views
0

考虑我有2名雇主(谷歌,雅虎)和谷歌是具有3个员工和雅虎是2员工SQL查询更改行值

我的查询应该添加

1000 to employee1 for google company 
2000 to employee2 for google company 
3000 to employee3 for google company 

1000 to employee1 for Yahoo company 
2000 to employee2 for Yahoo company 

对于每一组员工的它应该增加工资从1000

回答

1

您可以使用ROW_NUMBER()来计算新的工资开始:

SELECT Company, 
     Emp, 
     ROW_NUMBER() OVER(PARTITION BY Company ORDER BY Emp) * 1000 + Salary As NewSalary 
FROM YourTable 

如果要实际更新工资,则有一种方法是将该查询用作CTE

;WITH CTE AS ( 
SELECT Company, 
     Emp, 
     ROW_NUMBER() OVER(PARTITION BY Company ORDER BY Emp) * 1000 + Salary As NewSalary 
FROM YourTable 
) 

UPDATE T 
SET Salary = NewSalary 
FROM YourTable T 
INNER JOIN CTE C ON(T.Company = C.Company AND T.Emp = C.Emp)