`

sqlServer2005 CTE递归查询

    博客分类:
  • SQL
SQL 
阅读更多
创建表语句
 
CREATE TABLE ProductInfo(
	Id int IDENTITY(1,1) NOT NULL,
	ParentId int NULL,
	Title nvarchar](255),
	Code nvarchar(100) ,
	State int NULL,
        ...
        ...
        ...
	Memo text COLLATE Chinese_PRC_CI_AS NULL,
 CONSTRAINT PK_ProductInfo PRIMARY KEY CLUSTERED 



递归查询语句

WITH ProductCTE AS (
--> 一个定位点成员
SELECT  
  Id, 
  ParentId, 
  ProductNum, 
  GiveNum, 
  Title, 
  CAST(Title AS nvarchar(MAX)) AS TE, 
  CAST('' AS nvarchar(50)) AS ParentTitle, 
  Code, 
  ROW_NUMBER() OVER (ORDER BY getdate()) AS OrderID

FROM        
   ProductInfo
WHERE     
  (StructID = 5)


UNION ALL
-->一个递归成员  
SELECT     
  a.Id, 
  a.ParentId, 
  a.ProductNum, 
  a.GiveNum, 
  a.Title, 
  CAST(REPLICATE(' ', LEN(cte.TE)) + '|-' + a.Title AS nvarchar(MAX)) AS TE, 
  CAST(cte.Title AS nvarchar(50)) AS ParentTitle, 
  a.Code, 
  cte.OrderID * 100 + ROW_NUMBER() OVER (ORDER BY GETDATE()) AS OrderID
FROM         
  ProductCTE AS cte 
INNER JOIN
  ProductInfo AS a ON cte.ID = a.ParentID)
    
SELECT     
  Id, 
  ParentId, 
  ProductNum, 
  GiveNum, 
  Code, 
  TE, 
  Title, 
  ParentTItle, 
  OrderID
FROM         
  ProductCTE AS cteAll 
ORDER BY 
  LTRIM(orderID) ASC


查询结果


分享到:
评论

相关推荐

    SQL Server CTE 递归查询全解1

    总结来说,SQL Server的CTE递归查询是一种高效且灵活的方法,能够有效地处理层次结构数据。理解其工作原理和正确使用方式对于数据库开发人员来说至关重要,能帮助他们在处理树状数据结构时游刃有余。

    sqlserver 2005 使用CTE 实现递归

    ### SQL Server 2005 中使用 CTE 实现递归 #### 一、CTE 递归原理 在 SQL Server 2005 中,使用公共表表达式(Common Table Expression, CTE)实现递归是一种高效且直观的方式。递归 CTE 通常由两部分构成:定位...

    sql server 2008 递归查询所有上级或下级数据

    通过以上分析可以看出,在SQL Server 2008中使用CTE进行递归查询是一种高效且易于理解的方法。通过定义基础情况和递归规则,可以轻松地获取所有上级或下级数据。然而,在实际应用过程中,还需要综合考虑性能等因素,...

    [sql server]SQL Server2005杂谈(2):公用表表达式(CTE)的递归调用.doc

    本文主要介绍了 SQL Server 2005 中公用表表达式(CTE)的递归调用,用于解决树型结构数据的查询问题。CTE 是 SQL Server 2005 中的一种新的查询方式,它可以简化复杂的查询过程。 在本文中,我们使用一个树型结构...

    使用SqlServer CTE递归查询处理树、图和层次结构

    总的来说,使用SQL Server的CTE递归查询可以帮助我们有效地处理树形和层次结构数据,简化复杂查询的编写,同时保持代码的可读性和高性能。在设计数据库查询时,理解并掌握递归CTE的使用,对于处理具有层次关系的数据...

    SQL SERVER的CTE用法

    在SQL Server中,公共表表达式(Common Table Expression,简称CTE)是一种非常有用的查询构造,它可以临时定义一个结果集,然后在这个结果集的基础上进行进一步的查询操作。CTE不仅可读性强,而且有助于简化复杂的...

    SQL 递归查询,并将结果集保存在临时表中

    在SQL中,递归查询是一种强大的工具,常用于处理层级数据,例如组织结构、树形菜单等。在给定的场景中,我们需要根据一个特定的节点ID查询出该节点及其所有子节点,并将这些结果存储在一个临时表中。以下是实现这一...

    SQL Server 2005 Beta 2 Transact-SQL 增强功能

    SQL Server 2005 Beta 2带来了对Transact-SQL的显著增强,这些改进主要集中在提升查询表达能力、数据完整性(DRI)支持、性能优化以及错误处理方面。以下是对这些增强功能的详细说明: 1. **排序函数**: SQL ...

    sql server 2005脚本

    SQL Server 2005对T-SQL进行了扩展,添加了新的语法元素和函数,如窗口函数(OVER子句)、公用表表达式(CTE)、递归查询以及WITH关键字。这些功能使得复杂的数据处理和分析变得更加高效。 2. **存储过程和触发器*...

    SQLserver2008使用表达式递归查询

    在SQL Server 2008中,表达式递归查询是一种强大的工具,尤其适用于处理具有层级关系的数据,如组织结构、目录树或者分类系统。这种技术主要依赖于公用表表达式(Common Table Expression, CTE),它允许在单个查询...

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

    总结来说,SQL Server 2005/2008的递归CTE是一个强大的工具,它能有效地处理树型结构数据的查询,帮助我们构建和理解复杂的层次关系。通过本文中的Family Tree实例,我们了解了如何定义递归CTE,以及如何使用它来...

    sql server实现递归查询的方法示例

    sql server 通过CTE来支持递归查询,这对查询树形或层次结构的数据很有用 一般的树形表结构如下,相信大家都很熟悉的 id title pid 1 1级节点 0 2 2级节点 1 3 3级节点 2 4 4级节点 3 5 5级节点 4 ...

    Microsoft_SQL_Server_2005技术内幕:T-SQL查询.pdf

    本书及其续篇——《Microsoft SQL Server 2005技术内幕:T-SQL程序设计》介绍了SQL Server 2005中高级T-SQL查询、查询优化及编程相关的知识。这两本书侧重于解决实践中的常见问题,并讨论了解决这些问题的方法。它们...

    sqlserver实现树形结构递归查询(无限极分类)的方法

    SQL Server 2005及以后版本引入了公用表表达式(CTE,Common Table Expression)来支持递归查询,这极大地简化了处理这类问题的方式。 公用表表达式是一个在查询语句中定义的临时结果集,它可以在FROM子句中被多次...

    浅谈T-SQL语言之递归查询.pdf

    而SQL Server 2005引入的CTE(Common Table Expression,公用表表达式)提供了一种更简洁有效的方式,利用递归查询特性来处理层级数据。 CTE提供了一种可以引用自己的查询结果集的方法,它是一个临时命名的结果集,...

    CTE树形菜单递归查询 .sql

    sql查询tree树,使用的是cte 递归!

    sql递归查询实例2

    根据提供的信息,我们可以深入探讨如何使用SQL递归查询来获取所有属于特定`upperid`的数据及其子树。这里的关键在于理解递归查询的工作原理,并通过一个具体的例子来演示这一过程。 ### SQL递归查询概念 在关系型...

Global site tag (gtag.js) - Google Analytics