手机
当前位置:查字典教程网 >编程开发 >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 Server 2000中修改数据库COLLATE的实例

SQL Server 2000中的触发器使用

SQL SERVER 事务日志

SQL Server 2008的逻辑查询处理步骤

SQL Server 2005 还原数据库错误解决方法

SQL Server 2008 密钥 key 使用方法

SQL SERVER存储过程的使用

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

SQLSERVER 2005的ROW_NUMBER、RANK、DENSE_RANK的用法

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

精品推荐
分类导航