`
ybbkd2
  • 浏览: 33158 次
社区版块
存档分类
最新评论

利用 Sqlserver CTE 进行树结构统计

阅读更多
总结一下这段时间做的统计功能点。
下面的例子是利用sqlserver CTE 自下到上做树形结构的统计。
统计出每个节点的值都是下级节点的总和。


树形结构存储表:

CREATE TABLE [00_APP].[test_node](
	[id] [bigint] IDENTITY(1,1) NOT NULL,
	[nodename] [varchar](50) NULL, --节点名称
	[parentid] [bigint] NULL, -- 上级节点ID
	[nodetype] [bigint] NULL,-- 节点类型:1 节点,2 叶子
PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO



数据:





/******* 生成统计表 *******/

 WITH    suborgs
          AS (
			   SELECT  [00_APP].test_node.id ,
			           [00_APP].test_node.nodename ,
			           [00_APP].test_node.parentid ,
			           [00_APP].test_node.nodetype,
			           
			           -- 增加统计列 
			           [00_APP].test_node.nodename AS val 
			           
               FROM    [00_APP].test_node WITH ( NOLOCK )
               WHERE nodetype = 2 -- 叶子节点
               
               UNION ALL
           
               SELECT  node.id ,
                       node.nodename ,
                       node.parentid ,
                       node.nodetype ,

                       -- 增加的统计列 
                       suborgs.val
                       
               FROM     suborgs   
               INNER JOIN  [00_APP].test_node  AS node  ON suborgs.parentid = node.id  AND node.nodetype= 1 -- 非叶子节点
              )

-- 可根据 group 条件对 “统计列” 进行统计              
SELECT * FROM suborgs AS tres 



结果:












  • 大小: 19.5 KB
  • 大小: 23.9 KB
分享到:
评论

相关推荐

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

    CTE(Common Table Expressions)是从SQL Server 2005以后版本才有的。指定的临时命名结果集,这些结果集称为CTE。 与派生表类似,不存储为对象,并且只在查询期间有效。与派生表的不同之处在于,CTE 可自引用,还可...

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

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

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

    在SQL Server中,实现树形结构递归查询是...总之,SQL Server中的递归CTE为处理树形结构数据提供了强大而简洁的工具。通过正确地构造递归查询,我们可以方便地获取层级数据的任意层次结构,从而满足无限级分类的需求。

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

    SQL Server 2005 Beta 2带来了对Transact-SQL的显著增强,这些改进主要集中在...对于熟悉SQL Server 2000的用户来说,掌握这些新特性将有助于充分利用SQL Server 2005的新功能,提高数据库管理和应用程序开发的水平。

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

    最后,通过SELECT语句从FamilyTree中检索所有数据,即可得到完整的家族树结构。输出结果包含了每个成员的ID、关系、姓名、父辈ID、父辈名字以及所在代数。 递归CTE在处理树型结构数据时的优势在于它可以简洁地表达...

    Microsoft SQL Server中T-SQL关于树(层次)结构的处理研究.pdf

    树形结构处理在SQL Server中是指利用T-SQL来管理和查询那些以树状形式展现的层次性数据。 文档《Microsoft SQL Server中T-SQL关于树(层次)结构的处理研究》主要探讨了在SQL Server中使用T-SQL来处理树形数据结构的...

    SqlServer使用公用表表达式(CTE)实现无限级树形构建

    在SQL Server中,利用CTE进行无限级树形结构的构建主要依赖于递归。递归CTE允许查询自身多次执行,每次迭代都将结果集扩展到下一层次。 以下是一个使用CTE构建无限级树形结构的示例: ```sql DECLARE @Level INT = ...

    SQL Server 公用表表达式(CTE)实现递归的方法

    在本例中,我们将讨论如何利用CTE来实现递归,以便查找树形结构数据中的所有子孙节点。 首先,我们需要理解CTE的基本概念。CTE可以看作是在一个查询中定义的临时视图,它在查询执行的过程中有效,但不会存储为...

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

     深入理解T-SQL体系结构,充分利用高级T-SQL查询技术。  本书深入介绍了T-SQL的内部体系结构,揭示了基于集合的查询的强大威力,并包含大量来自专家们的参考和建议。通过本书提供的最佳实践和示例代码,数据库开发...

    在MS SQL Server中实现多级树

    这些工具支持对SQL Server中的树结构进行CRUD操作,并可以方便地在应用程序中呈现树视图。 6. **SQL Server 2000兼容性** 对于SQL Server 2000,由于没有`hierarchyid`,自连接和递归查询是构建多级树的主要手段。...

    SQLserver2008使用表达式递归查询

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

    sql server递归子节点、父节点sql查询表结构的实例

    在SQL Server中,递归查询是一种强大的工具,用于处理层级数据或树状结构的数据,例如组织结构、部门关系等。本文将深入探讨如何利用递归查询来获取子节点和父节点的信息。 一、查询当前部门下的所有子部门 在SQL ...

    SQL SERVER 2008 CTE生成结点的FullPath

    在SQL Server 2008中,生成树状结构数据的全路径,特别是涉及层级关系的数据,可以使用公共表表达式(Common Table Expression, CTE)来实现。CTE是SQL查询中的一个临时结果集,它可以在单个查询中被多次引用。在本...

    SQL Server 2005数据库技术与应用-教案

    SQL Server 2005是微软公司推出的一款强大的关系型数据库管理系统,它在数据库管理和开发领域扮演着重要的角色。此教程“SQL Server 2005数据库技术与应用”旨在全面解析该系统的各项特性和应用,帮助学习者掌握SQL ...

    SQLSERVER2005 中树形数据的递归查询

    在SQL Server 2005中,处理树形结构的数据是一项常见的任务,特别是在数据库设计中。树形数据通常用于表示层级关系,如组织结构、产品分类、目录结构等。递归查询是解决这类问题的有效方法,它允许我们通过自我连接...

    sqlserver 树形结构查询单表实例代码

    在SQL Server中,我们可以利用`WITH`子句配合递归公共表表达式(Recursive Common Table Expression, CTE)来查询树形结构。以下是具体代码示例: ```sql WITH TREE AS( -- 创建一个虚拟表,从根节点开始递归 ...

Global site tag (gtag.js) - Google Analytics