WITH common_table_expression

Feature:
  • 公用表表达式只能包含一个SELECT,多SELECT需UNION,UNION ALL
  • 公用表表达式只能引用一次
  • 公用表表达式可以包括对自身的引用,这种表达式称为递归公用表表达式
--临时表变量
WITH t_Class
AS
(
    SELECT *
    FROM Intranet..TemplateDocClass
    WHERE State = 1
)
SELECT COUNT(1)
FROM t_Class

--引用自身,递归多级别
WITH t_Class
AS
(
    SELECT ID,ClassName,1 AS [Deep]
    FROM Intranet..TemplateDocClass
    WHERE ParentID = -1

    UNION ALL

    SELECT C1.ID,C1.ClassName,C2.Deep + 1
    FROM Intranet..TemplateDocClass AS C1
    INNER JOIN t_Class AS C2 ON C2.ID = C1.ParentID
)
SELECT *
FROM t_Class

 

 
posted @ 2015-09-24 14:46  平小宅  阅读(292)  评论(0编辑  收藏  举报