SQL SERVER 递归查询

查找所有父结点:

WITH    CTE_Area

AS ( SELECT   *

FROM     Common.Area

WHERE    AreaCode = ‘30A‘

UNION ALL

SELECT   b.*

FROM     CTE_Area a,

Common.Area b

WHERE    a.ParentCode = b.AreaCode

)

SELECT  *

FROM    CTE_Area;

查找所有子结点:

WITH    CTE_Area

AS ( SELECT   *

FROM     Common.Area

WHERE    AreaCode = ‘1‘

UNION ALL

SELECT   b.*

FROM     CTE_Area a,

Common.Area b

WHERE    a.AreaCode = b.ParentCode

)

SELECT  *

FROM    CTE_Area;

时间: 2024-09-30 02:01:43

SQL SERVER 递归查询的相关文章

MS SQL Server递归查询

刚才在论坛上看到网友一个要求.参考如下,Insus.NET分析一下,可以使用MS SQL Server的递归查询,得到结果. 准备一张表: 根据网友提供的数据,填充此表: 下面语法在SQL Server 2014之下运行正常: 上面代码示例中,完整SQL代码: WITH TempDeptment ([ID],[PID],[DeptName],[Conjunction]) AS ( SELECT [ID],[PID],[DeptName], CAST([DeptName] AS Nvarchar(

【Sql Server】SQL SERVER 递归查询

SQL SERVER 2005之前的版本只能用函数方法实现,SQL SERVER 2005之后新增了CTE功能,可以利用CTE实现递归查询: CTE:公用表达式Common Table Expression 是SQL SERVER 2005版本之后引入的一个特性: #填充测试数据 1.sql 1 Create table GroupInfo1([Id] int,[GroupName] nvarchar(50),[ParentGroupId] int) 2 3 Insert GroupInfo1

Sql Server递归查询(转)

有如下数据表 假如我们要查询ID为003的数据的所有子节点我们可以使用CTE 递归查询完成... [sql] view plaincopyprint? if OBJECT_ID('tb','N') is not null drop table tb; create table tb(id varchar(3) , pid varchar(3) , name varchar(10)); insert into tb values('001' , null , '广东省'); insert into

SQL Server 2005递归查询

? 1 2 3 4 5 6 7 WHIT XXX(列1,列2....) AS (     SELECT 列1,列2... FROM 表WHERE ID=xxxxxx     UNION ALL     SELECT 列1,列2.... FROM 表 WHERE ID = XXX.ParentID ) SELECT     列1,列2.... FROM XXX SQL Server 2005递归查询,布布扣,bubuko.com

SQL Server CTE 递归查询全解

在TSQL脚本中,也能实现递归查询,SQL Server提供CTE(Common Table Expression),只需要编写少量的代码,就能实现递归查询,本文详细介绍CTE递归调用的特性和使用示例,递归查询主要用于层次结构的查询,从叶级(Leaf Level)向顶层(Root Level)查询,或从顶层向叶级查询,或递归的路径(Path). 一,递归查询原理 CTE的递归查询必须满足三个条件:初始条件,递归调用表达式,终止条件,CTE 递归查询的伪代码如下: WITH cte_name (

SQL Server使用递归查询数据

功能描述:有两张表,一张业务部门表A(A表中存某公司的所有业务部门信息),另一张表为用户表B(B表中存某公司所有用户所在的业务部门信息),要求使用SQL语句查询出各个部门的用户数量(注意:统计各业务部门的用户数量时,需要将其下所有子部门的用户统计进去): 表A: 表B:     方法描述: 使用SQL Server的递归方式: 1.先联合两张表查询数据,并将查询出的结果存放在临时表中: 2.使用cte方法从临时表中查询数据: 具体的SQL脚本如下: select B.用户名, B.业务部门, A

常用的sql server规范

常见的字段类型选择 1.字符类型建议采用varchar/nvarchar数据类型 2.金额货币建议采用money数据类型 3.科学计数建议采用numeric数据类型 4.自增长标识建议采用bigint数据类型   (数据量一大,用int类型就装不下,那以后改造就麻烦了) 5.时间类型建议采用为datetime数据类型 6.禁止使用text.ntext.image老的数据类型 7.禁止使用xml数据类型.varchar(max).nvarchar(max) 约束与索引 每张表必须有主键 •每张表必

一个有趣的SQL Server 层级汇总数据问题

看SQL Server大V宋大侠的博客文章,发现了一个有趣的sql server层级汇总数据问题. 具体的问题如下: parent_id emp_id emp_name total_amout     NULL 2 Andrew 200     2 1 Nancy 100     2 3 Janet 120     3 4 Michael 80     1 5 Robert 50     每个员工的总销售额=自己的销售额+其下级员工的总销售额,     比如:     Andrew = 200_

常用 SQL Server 规范集锦

常见的字段类型选择 1.字符类型建议采用varchar/nvarchar数据类型 2.金额货币建议采用money数据类型 3.科学计数建议采用numeric数据类型 4.自增长标识建议采用bigint数据类型   (数据量一大,用int类型就装不下,那以后改造就麻烦了) 5.时间类型建议采用为datetime数据类型 6.禁止使用text.ntext.image老的数据类型 7.禁止使用xml数据类型.varchar(max).nvarchar(max) 约束与索引 每张表必须有主键 每张表必须