sqlserver 存储过程 递归查询分组+hierarchyid重建会员关系
CREATE PROCEDURE [dbo].[GetGroupInfo]
@s_code NVARCHAR() = --会员卡号
AS
BEGIN
declare @p int; --查询唯一性结果
declare @sql nvarchar(); --拼接查询sql字串
set @sql='SELECT @p=n_teamlevel FROM t_user_basic WHERE s_code=' +@s_code;
exec sp_executesql @sql,N'@p AS int OUTPUT',@p OUTPUT;
with cte( NodeID,n_user,s_code,s_introducer,n_teamlevel ) as(
SELECT
NodeID=hierarchyID::Parse('/1/')
,n_user
,s_code
,s_introducer
,n_teamlevel
FROM t_user_basic
WHERE s_code=@s_code
union all
SELECT
NodeID=cast(b.NodeID.ToString() + cast(ROW_NUMBER() over (order by a.n_user) as varchar()) + '/' as hierarchyid)
,a.n_user
,a.s_code
,a.s_introducer
,a.n_teamlevel
FROM t_user_basic a
inner join cte b on (a.s_introducer=b.s_code)
WHERE a.s_introducer<>- and a.n_user> and a.n_teamlevel < @p
)
--SELECT * FROM cte WHERE n_teamlevel < @p and s_code <> @s_code and n_teamlevel <> null;
SELECT cast(NodeID as hierarchyid).ToString(),n_user,s_code,s_introducer,n_teamlevel FROM cte
END ---execute [dbo].[GetGroupInfo] ''

参考博文:http://www.cnblogs.com/Lixinhua-GoOn/archive/2016/01/29/5169297.html
sqlserver 存储过程 递归查询分组+hierarchyid重建会员关系的更多相关文章
- SqlServer存储过程应用二:分页查询数据并动态拼接where条件
前言 开发中查询功能是贯穿全文的,我们来盘一盘使用存储过程分页查询,并且支持动态拼接where条件. 划重点:支持动态拼接where条件 对存储过程的使用有疑问的同学去[SqlServer存储过程的创 ...
- 解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译)
解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译) http://improve.dk/where-does-sql-server-store-the-sourc ...
- Sqlserver 存储过程中结合事务的代码
Sqlserver 存储过程中结合事务的代码 --方式一 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ ...
- SqlServer存储过程学习笔记(增删改查)
* IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值. CREATE PROCEDURE [dbo].[PR_NewsAffiche_AddNewsEntity] ( ...
- SQLServer 存储过程嵌套事务处理
原文:SQLServer 存储过程嵌套事务处理 某个存储过程可能被单独调用,也可能由其他存储过程嵌套调用,则可能会发生嵌套事务的情形. 下面是一种解决存储过程嵌套调用的通用代码,在不能确定存储过程是否 ...
- 创建并在项目中调用SQLSERVER存储过程的简单示例
使用SQLSERVER存储过程可以很大的提高程序运行速度,简化编程维护难度,现已得到广泛应用.创建存储过程 和数据表一样,在使用之前需要创建存储过程,它的简明语法是: 引用: Create PROC ...
- Sqlserver如何递归查询层级数据将父级字段和本级某个字段合并?如何自定义用户函数并调用?
开门见山,首先说下遇到的问题:前期系统地区字典表中,每个省市县只存了本级名称,没存完整的字段.如:肥西县隶属安徽省合肥市,表中就存了一个肥西县.现有需求需要将完整字段显示,由于系统已在线上运营,无法做 ...
- SQLSERVER存储过程语法详解
CREATE PROC [ EDURE ] procedure_name [ ; number ] [ { @parameter data_type } [ VARYING ] [ = default ...
- SqlServer存储过程详解
SqlServer存储过程详解 1.创建存储过程的基本语法模板: if (exists (select * from sys.objects where name = 'pro_name')) dro ...
随机推荐
- sqoop: mysql to hive
sqoop import --connect 数据库连接 --username 数据库用户名--password 数据库密码 --table 导入的表 -m 1 --hive-import --tar ...
- 3)C语言数组(C自考学习)
一维数组 一维数组中的元素是排列成一行的,当需要存放一行或一列数据时常用一维数组.一维数组的元素常用"数组名[下标]"来表示,其中,下表是从0开始的.例如:a[0]="h ...
- h5 canvas 图片上传操作
最近写的小 demo,使用的是h5的 canvas来对图片进行放大,移动,剪裁等等这是最原始的代码,比较接近我的思路,后续会再对格式和结构进行优化 html: <pre name="c ...
- Next week plan
1.get a job 2.write a high performance chatroom with encryption. Use scala. Next Week turn to Rust
- NOIP2017-普及组复赛第2题 题解
Description 图书馆中每本书都有一个图书编码,可以用于快速检索图书,这个图书编码是一个正整数. 每位借书的读者手中有一个需求码,这个需求码也是一个正整数.如果一本书的图书编码恰好以读者的需 ...
- laravel中with()方法,has()方法和whereHas()方法的区别
with() with()方法是用作"渴求式加载"的,那主要意味着,laravel将会伴随着主要模型预加载出确切的的关联关系.这就对那些如果你想加在一个模型的所有关联关系非常有帮助 ...
- markdown 字体颜色
Markdown是一种可以使用普通文本编辑器编写的标记语言,通过类似HTML的标记语法,它可以使普通文本内容具有一定的格式.但是它本身是不支持修改字体.字号与颜色等功能的! CSDN-markd ...
- log4net使用注意事项
1配置Log4net Log4net的配置文件有几种使用方式,这里将配置log4net的部分独立出来,即关于log4net的配置独立成文件log4net.config. 1)写入Mysql log4n ...
- 编写高质量代码—javascript的分层—base层
base层的功能是为common层和page层提供接口.封装不同浏览器下javaScript的差异,提供统一的接口 1.用getNextNode 函数封装IE和Firefox的差异: 2.透明度:封装 ...
- Python的用户交互程序及格式化输出
1. 用户输入 在Python 3 中,用户输入用input()函数即可实现用户交互程序. 例如,我们根据程序提示输入用户名和密码,并且打印输入的信息. 2. 字符串格式化输出 例如,我们根据程序提 ...