如果我有這張桌子:

我想使用 T-SQL 遍歷每一行并找到與每一行EmpID對應的,并將主管的SupervisorID分配給.LastNameSupervisorLastName
所以結果應該是:

我從這個開始,但我認為它只是在單個行級別檢查是否SupervisorID等于,所以它什么都不回傳。EmpID
CASE
WHEN (EmpID = SupervisorID)
THEN CAST(LastName AS CHAR(30))
END AS SupervisorLastName
我想我的第一個示例具有誤導性,因為我實際上想創建該列SupervisorLastName。我的例子表明它已經存在。謝謝
uj5u.com熱心網友回復:
你能試試這樣的東西嗎?
SELECT t1.*,
t2.LastName AS SupervisorLastname
FROM table1 t1
LEFT JOIN (SELECT EmpID, LastName FROM table1) t2 ON t2.EmpID = t1.SupervisorID
uj5u.com熱心網友回復:
ALTER TABLE TableName
ADD SuperVisorLastName NVARCHAR(100) DEFAULT NULL;
UPDATE TB1
SET SuperVisorLastName = TB2.LastName
FROM TableName TB1
CROSS APPLY (SELECT TOP 1 * FROM TableName TB2 WHERE TB2.EmpID =
TB1.SupervisorID) TB2
我會做類似上面的事情,只需添加默認為空的列。然后進行交叉申請以獲取正確的姓氏并更新該列。不可復制和粘貼,但應該讓您大致了解如何做到這一點。
話雖這么說,由于那里的 ID,您在技術上已經知道主管是誰。因此,您無需在資料庫中不必要地重復資料。
uj5u.com熱心網友回復:
SELECT t1.EmpID,
t1.FirstName,
t1.LastName,
t1.SupervisorID,
t2.LastName AS SupervisorLastname
FROM #testTable t1
LEFT JOIN #testTable t2 ON t2.EmpID = t1.SupervisorID
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/448480.html
上一篇:不顯示空的選擇結果
