sql-server - 使用 Microsoft SQL Server 从另一个基于列的表更新表

标签 sql-server database tsql updating

嘿,我有两张 table 。包含我需要传输到员工表 (GradeID) 的数据 (gID) 的成绩表。

员工

EmployeeID  | Name       | mgr | Job         | Salary| Comm | HireDate     | dID| GradeID
1001 | Susan Adams   | 1004| Locksmith| 60000| 20000| 2005-04-12| 1  | NULL
1002 | Ricky Jones    | 1004| Writer| 85000 | 15000| 2020-01-18| 1  | NULL
1003 | Beatrice    | 1006| Editor| 89000 | NULL | 2002-03-07| 2  | NULL


GradeID| MinSal| MaxSal| Holiday
A  | NULL  | 60000 | 40
B  | 60000 | 80000 | 40
C  | 90000 | 100000| 40
D  | 200000| 120000| 45
E  | 320000| NULL  | 55

这是我目前的情况

UPDATE EMPLOYEE
SET GradeID = 'A'
WHERE Salary between (SELECT COALESCE(MAX(MinSAL),0) From GRADE WHere gID = 'A') and (SELECT Max (MaxSal) From GRADE where gID = 'A')

UPDATE EMPLOYEE
SET GradeID = 'B'
WHERE Salary between (SELECT MAX(MinSal) From GRADE WHere gID = 'B') and (SELECT Max (MaxSal) From GRADE where gID = 'B')

UPDATE EMPLOYEE
SET GradeID = 'C'
WHERE Salary between (SELECT MAX(MinSal) From GRADE WHere gID = 'C') and (SELECT Max (MaxSal) From GRADE where gID = 'C')

UPDATE EMPLOYEE
SET GradeID = 'D'
WHERE Salary between (SELECT MAX(MinSal) From GRADE WHere gID = 'D') and (SELECT Max (MaxSal) From GRADE where gID = 'D')

UPDATE EMPLOYEE
SET GradeID = 'E'
WHERE Salary between (SELECT MAX(MinSal) From GRADE WHere gID = 'E') and (SELECT COALESCE(MAX(MaxSAL),1000000000000000) From GRADE WHere gID = 'E')

但我需要一个不那么笨拙的查询,它可以根据他们的薪水在 Employee 表中填充正确的等级。感谢您的帮助。

最佳答案

尝试使用更新连接:

UPDATE e
SET e.GradeID = g.gID
FROM Employee e
INNER JOIN Grade g
    ON (e.Salary > g.MinSal OR g.MinSal IS NULL) AND
       (e.Salary <= g.MaxSal OR g.MaxSal IS NULL);

关于sql-server - 使用 Microsoft SQL Server 从另一个基于列的表更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55254182/

相关文章:

php - 如何在 CakePHP 中将 staff_name 列保存为其他列?

.net - .net DbProviderFactory 线程安全吗?

sql - XML 路径分组依据 ibn SQL

c# - 更改从asp.net中的sql查询接收到的文本

显示多个条目及其计数的 SQL 查询

sql - 拆分 SQL 结果

mysql - 使用 MySQL 删除数据库字段的每个单元格中的字符(特定斜杠)

sql-server - @@OPTIONS 位掩码与 DISABLE_DEF_CNST_CHK

SQL - 总行数的百分比

c# - 从 XML 更新插入 SQL Server 表