帶有樹形結構的部門層級關系表
-----------------------------------用CTE
WITH DeptTree(ParentDeptID, DeptID, DeptName, DeptLevel,Sort)
AS
(
SELECT PMIS_Department_Name as ParentDeptID,
autoid as DeptID,
PMIS_Department_Code as DeptName,
0 AS DeptLevel,
--根路徑
Cast(PMIS_Department_Code+'->' as varchar(max)) as Sort
FROM dbo.PMIS_Department
WHERE PMIS_Department_Name =0
UNION ALL
SELECT c.PMIS_Department_Name,
c.autoid,
c.PMIS_Department_Code,
p.DeptLevel + 1,
--子路徑=根路徑+孩子的DEP
Cast(p.Sort+c.PMIS_Department_Code+'->' as varchar(max))
FROM dbo.PMIS_Department c
INNER JOIN DeptTree p
ON c.PMIS_Department_Name = p.DeptID
)
SELECT ParentDeptID, DeptID, DeptName,replicate(' ',DeptLevel)+'|__'+DeptName as dep, DeptLevel,Sort
FROM DeptTree order by sort
----------------------用函式的指令碼
alter function dbo.GDS_TEST
(@root int,@maxlevels as int=null)
returns @Subs table( depid int,depName varchar(50),lvl int ,path varchar(max)
unique clustered(lvl,depid))
as
begin
declare @lvl int;
set @lvl=0
set @maxlevels=coalesce(@maxlevels,2147483647)
insert into @Subs(depid,depName,lvl,path)
select autoid,PMIS_Department_Code,@lvl,cast(PMIS_Department_Code as varchar(10))+'>' from dbo.PMIS_Department
where autoid=@root
while @@rowcount>0--當上一級別包含行
and @lvlbegin
select @lvl=@lvl+1 --遞增級別計數器
insert into @Subs(depid,depName,lvl,path)
select c.autoid,replicate(' ',@lvl)+'|__'+c.PMIS_Department_Code,@lvl,p.path+cast(c.PMIS_Department_Code as varchar(10))+'>'
from @Subs as p --父級
join dbo.PMIS_Department as c --子級
on p.lvl=@lvl-1 and c.PMIS_Department_Name=p.depid --從上一級篩選父親
end
return
end
select * from dbo.GDS_TEST(3,2)order by path
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7899089/viewspace-611048/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android 多級樹形結構顯示Android
- 03【若依框架解讀】Tree樹形結構的控制(選單,部門)框架
- 樹形結構
- 如何在 Laravel 中去構建部門樹形結構 APILaravelAPI
- 樹形結構的選單表設計與查詢
- MySQL多層級結構-樹搜尋介紹MySql
- JS 將有父子關係的陣列轉換成樹形結構資料JS陣列
- js將有父子關係的資料轉換成樹形結構資料JS
- 樹形結構處理
- LayUI—tree樹形結構的使用UI
- 工具函式:普通陣列如何轉為樹形結構資料(多層級)陣列?函式陣列
- 七、基本資料結構(樹形結構)資料結構
- markdown樹形結構生成工具
- Linux 下樹形結構的檢視Linux
- 資料結構中樹形結構簡介資料結構
- MySql樹形結構(多級選單)查詢設計方案MySql
- 字串陣列轉為樹形結構字串陣列
- 聊聊mysql的樹形結構儲存及查詢MySql
- 將List物件列表轉為樹形結構物件
- 關於elementUI樹狀結構的bugUI
- 在vue專案中使用樹形結構的穿梭框Vue
- 值得了解的九種樹形資料結構 - Franco資料結構
- JAVA樹形結構 通用程式碼(高效能)Java
- 計算機網路的七層結構、五層結構和四層結構計算機網路
- 樹形資料構造的方法
- iView元件庫之下拉框dropdown(樹形結構)View元件
- Vue遞迴元件實現樹形結構選單Vue遞迴元件
- 淺談樹形結構的特性和應用(上):多叉樹,紅黑樹,堆,Trie樹,B樹,B+樹...
- 關於Spring Cloud的特性與層次結構SpringCloud
- Fuchsia 作業系統的四層結構作業系統
- 帶有半透明遮罩層可關閉視窗遮罩
- 架構分層的小糾結-層級該如何劃分與定位?架構
- Java關於資料結構的實現:樹Java資料結構
- TiDB 底層儲存結構 LSM 樹原理介紹TiDB
- MySQL怎樣透過Adjacency List儲存樹形結構?MySql
- java讀取excel層級結構的遞迴寫法JavaExcel遞迴
- layui 樹形結構刪除沒有確認,原始碼加入confirm確認提示框UI原始碼
- layui.tree樹形結構節點判定條件的刪除操作UI
- 有什麼工具能生成帶有動態報表圖形的 word 報告嗎?