2017-07-26 100 views
3

我收到了一份500名学生没有学生证的学生的电子表格。我将它作为表格导入到SQL中,我将它称为“表格a”。TSQL:如何根据字符串和日期进行更新?

我有另一张桌子,所有的学生和他们的ID,完整的出生日期等,我会称之为'表b'。

目标:
将学生ID从表b复制到表a中。要做到这一点,我想我需要根据学生姓名和出生日期更新表格a。

问题:
我的更新查询,复制凭学生证对谁拥有相同生日的学生,但他们有不同的姓氏。所以结果是两个具有相同出生日期的不同学生拥有相同的学生ID。

我该如何用正确的学生ID更新表格a?

说的推杆重复的ID对同一学生

我现在的更新语句:

UPDATE table a 
SET EMPStudentID = CAStudentID 
FROM #students 
WHERE EmpStudentName = CA_STUNAME 
     AND EMP_DOB = CA_DOB 

谢谢。

截图样本数据:样本数据的 enter image description here

代码:

CREATE TABLE #students (
    EMPStudentID int 
, EmpStudentName varchar(30) 
, EMP_DOB DATE 
, CA_DOB DATE 
, CA_STUNAME VARCHAR(30) 
, CAStudentID int 
) 

INSERT INTO #students (EmpStudentName ,EMP_DOB ,CA_DOB ,CA_STUNAME ,CAStudentID) 
VALUES 
('Brothers, John', '20000309', '20000309', 'Brothers, John', 1111111), 
('Campbell, Thomas', '20000107', '20000107', 'Campbell, Thomas', 2222222), 
('Echols, Terry', '20000309', '20000309', 'Echols, Terry', 3333333), 
('Jones, Bruce',  '20000518', '20000518', 'Jones, Bruce',  4444444), 
('Maxwell, Lauren', '20000728', '20000728', 'Maxwell, Lauren', 5555555), 
('Feldler, John', '19991026', '19991026', 'Feldler, John', 6666666), 
('Jenkins, Michael', '19990322', '19990322', 'Jenkins, Michael', 7777777), 
('Taylor, Greg',  '20000428', '20000428', 'Taylor, Greg',  8888888), 
('Williams, Gene', '20000105', '20000105', 'Williams, Gene', 9999999), 
('Wynn, Charles', '20000111', '20000111', 'Wynn, Charles', 1233211) 

SELECT * FROM #students 

回答

2

尝试此下面

UPDATE S 
SET EMPStudentID = A.CAStudentID 

FROM #students S 
INNER JOIN #TableA A 
ON S.EmpStudentName = A.CA_STUNAME 
     AND S.EMP_DOB = A.CA_DOB 

SELECT * FROM #students 
相关问题