2017-07-26 49 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 
相關問題