SQL 递归使用】的更多相关文章

-- 查询指定部门下面的所有部门, 并汇总各部门的下级部门数 ) SET @Dept_name = N'MIS' ;WITH DEPTS AS( -- 查询指定部门及其下的所有子部门 -- 定位点成员 SELECT * FROM Dept WHERE name = @Dept_name UNION ALL -- 递归成员, 通过引用CTE自身与Dept基表JOIN实现递归 SELECT A.* FROM Dept A, DEPTS B WHERE A.parent_id = B.id ), DE…
递归一般出现在树形结构中 1:根据孩子节点查找所有父节点 With T As ( Select * From U_Companies TB Where CompanyID=80047 Union All Select TB.* From U_Companies TB Inner Join T on TB.CompanyID=T.ParentID ) Select * From T 2:根据父亲查找所有子节点 With T As ( Select * From U_Companies TB Whe…
昨晚看的书,发现可以用T-SQL 实现自定义递归,其实也就是变相的 foreach 直接上代码 ,不懂得可问: ),col int ) -- id 增量id pid该数据的上级增量id name 名称 declare @id int ,@col int insert into @t select id,pid,[name],@col from dbo.CTE where id=@id begin insert into @t select CTE.id,CTE.pid,CTE.[name],@c…
with Test_Recursion(Id,ParentId)AS(select Id,ParentId  from [V_KPI_DetailsActivities] where ParentId  = 4 --没有引用CTE自身必须放在第一个递归行之上union all  --没有引用CTE自身的语句和第一个递归行之间必须用UNION ALLselect a.Id,a.ParentId from [V_KPI_DetailsActivities] as a join Test_Recurs…
在SQL的树型结构中,很多时候,知道某一节点的值,需要查找该节点的所有子节点(包括多级)的功能,这时就需要用到如下的用户自定义函数. 表结构如下: ID int Dep_Type int Dep_Code varchar(50) Dep_Name varchar(50) Dep_Dian int Dep_FathID int Dep_Opera varchar(50) Dep_Status int Dep_AddTime datetime 用户自定义函数如下: create function f…
with CTE as ( -->Begin 一个定位点成员 select ID, PersonName,ParentID,cast(PersonName as nvarchar(max)) as TE, ROW_NUMBER()over(order by getdate()) as OrderID --最关键是上面这个字段,要获取排序字段,按字符串来排序. --其中窗口函数必须要使用order by,但是不能用整型,那就用时间吧 from tmpTPStmp where ParentID=0-…
直接贴代码吧= = WITH CTE AS ( -->Begin 一个定位点成员 SELECT COUNTRYORDERID,HSNAME, COUNTRYNAME,PARENTORDERID, IMPORTCURRENTSUMAMOUNT, IMPORTCONTRASTSUMAMOUNTPERCENTAGE, IMPORTCURRENTSUMAMOUNTPERCENTAGE, CAST(COUNTRYNAME AS NVARCHAR(max)) AS TE,0 AS Levle FROM #T…
xml 代码 <resultMap type="xxx.xxx.xxx.xxx.实体类" id="xxxListTree"> <result column="id" property="id" javaType="java.lang.Long" /> <result column="xxx_name" property="xxxName"…
if object_id('[tb]') is not null drop table [tb] go create table [tb]([modeid] int,modename varchar(20),parentid int) insert [tb] select 100 ,'商品管理', 0 union all select 101 ,'定单管理', 0 union all select 102 ,'用户管理', 0 union all select 104 ,'学院广告', 0 un…
select (SELECT (Case A1.AreaAbbr WHEN '' THEN A1.AreaName Else A1.AreaAbbr  END)+ ' ' FROM AreaLang A1            WHERE (SELECT AreaNo FROM Area WHERE Area.AreaID= A1.AreaID) IN            (SUBSTRING((SELECT AreaNo FROM Area Where Area.AreaID=P.AreaI…