T-SQL with关键字 with as 递归循环表

WITH EmpsCTE AS
(
 SELECT EmployeeID, ReportsTo, FirstName, LastName
 FROM dbo.Employees
 WHERE EmployeeID = 5
 UNION ALL

 SELECT EMP.EmployeeID, EMP.ReportsTo, EMP.FirstName, EMP.LastName
 FROM EmpsCTE AS MGR
  JOIN dbo.Employees AS EMP
   ON EMP.ReportsTo = MGR.EmployeeID
)
SELECT * FROM EmpsCTE;


SET ANSI_NULLS ON  
GO  
SET QUOTED_IDENTIFIER ON  
GO  
-- =============================================  
-- Author:      KenshinCui  
-- Create date: 2011.12.30  
-- Description: 取得所有子节点  
-- =============================================  
CREATE FUNCTION GetChildren  
(  
    @ID INT  
)  
RETURNS   
@tbChildren TABLE   
(  
    ID INT   
)  
AS  
BEGIN  
      
    WITH ChildrenCTE(ID)  
    AS  
    (  
        SELECT ID FROM dbo.Tree WHERE parentID=@ID  
        UNION ALL  
        SELECT Tree.ID FROM Tree INNER JOIN ChildrenCTE ON ChildrenCTE.ID = Tree.parentID  
    )  
    INSERT INTO @tbChildren  SELECT Id FROM ChildrenCTE  
      
    RETURN  
END  
GO  




http://www.cnblogs.com/wwan/archive/2011/02/24/1964279.html


http://blog.csdn.net/kenshincui/article/details/7166379

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值