檢查 Employee 資料表的目前結構
AdventureWorks 範例資料庫在 HumanResources 結構描述中包含一個 Employee 資料表。為避免變更原始資料表,此步驟會製作一個名為 EmployeeDemo 的 Employee 資料表副本。若要簡化範例,您僅能從原始資料表複製五個資料行。然後,您可以查詢 HumanResources.EmployeeDemo 資料表,以便在不使用 hierarchyid 資料類型的情況下,檢閱如何將資料表中的資料結構化。
複製 Employee 資料表
在 [查詢編輯器] 視窗中執行下列程式碼,以便將資料表結構和資料從 Employee 資料表複製到名稱為 EmployeeDemo 的新資料表。
USE AdventureWorks ; GO SELECT EmployeeID, LoginID, ManagerID, Title, HireDate INTO HumanResources.EmployeeDemo FROM HumanResources.Employee ; GO
檢查 EmployeeDemo 資料表的結構和資料
這個新的 EmployeeDemo 資料表代表現有的資料庫中,您想要移轉成新結構的一般資料表。在 [查詢編輯器] 視窗中,執行下列程式碼以顯示資料表如何使用自我聯結來顯示員工/主管關聯性:
SELECT Mgr.EmployeeID AS MgrID, Mgr.LoginID AS Manager, Emp.EmployeeID AS E_ID, Emp.LoginID, Emp.Title FROM HumanResources.EmployeeDemo AS Emp LEFT JOIN HumanResources.EmployeeDemo AS Mgr ON Emp.ManagerID = Mgr.EmployeeID ORDER BY MgrID, E_ID
以下為結果集:
MgrID Manager E_ID LoginID Title NULL NULL 109 adventure-works\ken0 Chief Executive Officer 3 adventure-works\roberto0 4 adventure-works\rob0 Senior Tool Designer 3 adventure-works\roberto0 9 adventure-works\gail0 Design Engineer 3 adventure-works\roberto0 11 adventure-works\jossef0 Design Engineer 3 adventure-works\roberto0 158 adventure-works\dylan0 Research and Development Manager 3 adventure-works\roberto0 263 adventure-works\ovidiu0 Senior Tool Designer 3 adventure-works\roberto0 267 adventure-works\michael8 Senior Design Engineer 3 adventure-works\roberto0 270 adventure-works\sharon0 Design Engineer 6 adventure-works\david0 2 adventure-works\kevin0 Marketing Assistant ...
會繼續顯示結果,總共包含 290 個資料列。
請注意,ORDER BY 子句會使輸出將每個管理層級的下屬列在一起。例如,MgrID 3 (roberto0) 的全部七個下屬會緊接著彼此列出。雖然並非不可能,但是要將最終回報給 MgrID 3 的所有人群組在一起更為困難。
在下一項工作中,我們將建立資料類型為 hierarchyid 的新資料表,然後將資料移到這個新資料表中。