आधारित कर्मचारी शीर्षक अपडेट कर रहा है मैं 2 टेबल हैएसक्यूएल पर सबसे हाल की स्थान
select * from #Table1
+------------+-------+---------------------+
| EMPLOYEEID | Name | Title |
+--------------------+---------------------+
| 1 | Tom | System Admin |
| 2 | Bill | Server Admin |
| 3 | John | Senior Server Admin |
| 4 | Bob | IT Staff |
| 5 | Jill | Senior IT Staff |
+--------------------+---------------------+
तालिका 2
CREATE TABLE #Table2(
EMPLOYEEnumber [nvarchar] (100) NULL,
Name [nvarchar] (100) NULL,
positiontitle [nvarchar] (100) NULL,
datepositionstart [date] NOT NULL)
INSERT INTO #Table2 (EMPLOYEEnumber, Name, positiontitle, datepositionstart) VALUES ('1','Tom','System Admin', '2014-07-03'), ('1','Tom','Server Admin', '2014-08-13'), ('1','Tom','Senior Server Admin', '2016-07-23'), ('2', 'Bob', 'IT Staff', '2014-07-03') , ('2', 'Bob', 'Senior IT Staff', '2016-10-15')
जो मुझे देता है:
select * from #Table2
+----------------+-------+---------------------+-----------------+
| EMPLOYEEnumber | Name | positiontitle |datepositionstart|
+----------------+-------+--------------------+-----------------+
| 1 | Tom | System Admin | 2014-07-03 |
| 2 | Tom | Server Admin | 2014-08-13 |
| 3 | Tom | Senior Server Admin | 2016-07-23 |
| 4 | Bob | IT Staff | 2014-07-03 |
| 4 | Bob | Senior IT Staff | 2016-10-15 |
+------------------------+---------------------+-----------------+
तालिका 2 में सबसे हाल की स्थिति के आधार पर मैं तालिका 1 कर्मचारी शीर्षक कैसे अपडेट करूं?
नीचे दिए गए कोड को सबसे हालिया तारीख नहीं मिलती है, इसके बजाय मुझे तालिका 2 से कर्मचारियों की डुप्लिकेट उसी डेटपॉजिस्टार्ट के साथ मिलती है।
UPDATE Table1
SET E.TITLE = hre.[PositionTitle]
FROM Table1 E
JOIN Table2 hre on hre.EmployeeNumber = E.EMPLOYEEID
WHERE
E.Name = hre.Name
AND datepositionstart =
(SELECT MAX(datepositionstart)
FROM table2 hre
WHERE hre.EmployeeNumber = E.EMPLOYEEID)
अपेक्षित परिणाम:
+------------+-------+---------------------+
| EMPLOYEEID | Name | Title |
+--------------------+---------------------+
| 1 | Tom | Senior Server Admin |
| 2 | Bill | Server Admin |
| 3 | John | Senior Server Admin |
| 4 | Bob | Senior IT Staff |
| 5 | Jill | Senior IT Staff |
+--------------------+---------------------+
काश सभी एसक्यूएल प्रश्नों इस प्रकार फ़ॉर्मेट किया गया था! आपने इसके लिए अपना अपवर्त अर्जित किया। –
हां, तालिका 2 में आपका डेटा गलत प्रतीत होता है ... –
नहीं, ऐसा मत करो। इसके बजाय एक दृश्य बनाएँ। (या, शायद, एक गणना कॉलम है।) लेकिन डेटा असंगतता को खतरे में डालकर, एक ही डेटा को दो बार स्टोर क्यों करें? – jarlh