MS SQL Server递归查询

刚刚在论坛上见到网友一个要求。参考如下,Insus.NET分析一下,可以行使MS
SQL Server的递归查询,得到结果。
图片 1

预备一张表:
图片 2

按照网友提供的多少,填充此表:
图片 3

下面语法在SQL Server 2014之下运行正常化:
图片 4

下面代码示例中,完整SQL代码:

图片 5图片 6

WITH TempDeptment ([ID],[PID],[DeptName],[Conjunction]) AS
(
    SELECT [ID],[PID],[DeptName], CAST([DeptName] AS Nvarchar(1000)) FROM [dbo].[Deptment] WHERE [PID] = 0
    UNION ALL
    SELECT d.[ID], d.[PID], d.[DeptName], CAST(([Conjunction] + N'/' + d.[DeptName]) AS Nvarchar(1000))    FROM TempDeptment AS td,[dbo].[Deptment] AS d WHERE td.[ID] = d.[PID]
)
SELECT [ID], [Conjunction] FROM TempDeptment

View Code

运作结果:
图片 7

 

  Insus.NET从前也远非在SQL中贯彻过递归,现刚好有一个实例,算是磨炼了。

 

相关文章