手机
当前位置:查字典教程网 >编程开发 >mssql数据库 >SQL SERVER 2008 CTE生成结点的FullPath
SQL SERVER 2008 CTE生成结点的FullPath
摘要:好的,现在来看如何生成FullPath:复制代码代码如下:DECLARE@tblTABLE(Idint,ParentIdint)INSERT...

好的,现在来看如何生成FullPath:

复制代码 代码如下:

DECLARE @tbl TABLE

(

Id int

,ParentId int

)

INSERT INTO @tbl

( Id, ParentId )

VALUES ( 0, NULL )

, ( 8, 0 )

, ( 12, 8 )

, ( 16, 12 )

, ( 17, 16 )

, ( 18, 17 )

, ( 19, 17 )

WITH abcd

AS (

-- anchor

SELECT id

,ParentID

,CAST(id AS VARCHAR(100)) AS [Path]

FROM @tbl

WHERE ParentId IS NULL

UNION ALL

--recursive member

SELECT t.id

,t.ParentID

,CAST(a.[Path] + ',' + CAST( t.ID AS VARCHAR(100)) AS varchar(100)) AS [Path]

FROM @tbl AS t

JOIN abcd AS a ON t.ParentId = a.id

)

SELECT Id ,ParentID ,[Path]

FROM abcd

WHERE Id NOT IN ( SELECT ParentId

FROM @tbl

WHERE ParentId IS NOT NULL )

返回:

Id ParentID Path

----------- ----------- ----------------------

18 17 0,8,12,16,17,18

19 17 0,8,12,16,17,19

就这么简单,实际上有Sql server 2008中HierarchyType 也能很好的解决这个问题。我将在后面写一些关于HierarchyType的Post.

希望这篇POST对您有帮助。

Author Peter Liu

【SQL SERVER 2008 CTE生成结点的FullPath】相关文章:

SQL Server2008导出数据生成文件

使用SQLSERVER 2005/2008 递归CTE查询树型结构的方法

SQL2005重新生成索引的的存储过程 sp_rebuild_index 原创

SQL Server 2008 存储过程示例

SQL SERVER 2008 中三种分页方法与比较

SQL Server 2008 密钥 key 使用方法

SQL Server 2000中的触发器使用

SQL SERVER 2008 R2配置管理器出现“远程过程调用失败”(0x800706be)错误提示

SQL SERVER 数据页面头部结构解析

SQL SERVER 2005数据库还原的方法

精品推荐
分类导航