弗里斯特創建一個數據類型來保存表
create type testTypeM as table (Id int , Name varchar(30), ParentId int, Type bit)
創建遞歸函數以獲得層次結構
裝載表到表中的數據類型
DECLARE @TableSrc testTypeM
Insert @TableSrc (Id,Name, ParentId, Type) Values
(0, 'Global Service', NULL, 0)
,(1, 'Logisticians', 0 ,0)
,(2, 'Technicians', 0 ,0)
,(3, 'Drivers', 2, 0)
,(4, 'Controllers', 2, 0)
,(5, 'Mike', 1, 1)
,(6, 'George',1,1)
,(7, 'Stef', 3, 1)
,(8, 'John', 3, 1)
,(9, 'Alfred', 4, 1)
-- In Prosduction
--INSERT @TableSrc
--SELECT * FROM Your table
使用,因爲它
SELECT * FROM dbo.TestFuncM(0, @TableSrc) WHERE TYPE = 1;
Id Name ParentId Type
----------- ------------------------------ ----------- -----
5 Mike 1 1
6 George 1 1
7 Stef 3 1
8 John 3 1
9 Alfred 4 1
SELECT * FROM dbo.TestFuncM(1, @TableSrc) WHERE TYPE = 1;
Id Name ParentId Type
----------- ------------------------------ ----------- -----
5 Mike 1 1
6 George 1 1
SELECT * FROM dbo.TestFuncM(2, @TableSrc) WHERE TYPE = 1;
Id Name ParentId Type
----------- ------------------------------ ----------- -----
7 Stef 3 1
8 John 3 1
9 Alfred 4 1
SELECT * FROM dbo.TestFuncM(3, @TableSrc) WHERE TYPE = 1;
Id Name ParentId Type
----------- ------------------------------ ----------- -----
7 Stef 3 1
8 John 3 1
SELECT * FROM dbo.TestFuncM(4, @TableSrc) WHERE TYPE = 1;
Id Name ParentId Type
----------- ------------------------------ ----------- -----
9 Alfred 4 1
SELECT * FROM dbo.TestFuncM(5, @TableSrc) WHERE TYPE = 1;
-- No Result`enter code here`
您的解決方案的工作,但我不能在我的SQL SERVER上引入用戶定義的函數。是否有可能只使用SQL查詢?不管怎麼說,還是要謝謝你。 – Bronzato
你可以嘗試使用物理表並創建一個循環來模擬函數行爲,在lanch之後,如果沒有人回答它,我會嘗試創建一些東西。 –
我使用LOOP創建了一個新答案。很容易適應程序 –