SQL2005的CTE

SQL2005的CTEuse test
SQL2005的CTE
go
SQL2005的CTEif object_id('Tempdb..#T') is not null
SQL2005的CTE drop table #T
SQL2005的CTE
create table #T(ID int,Name nvarchar(100),parentID int)
SQL2005的CTE
insert #T select 1,'A',0
SQL2005的CTEinsert #T select 2,'B',1
SQL2005的CTEinsert #T select 3,'C',1
SQL2005的CTEinsert #T select 4,'D',3
SQL2005的CTEinsert #T select 5,'E',2
SQL2005的CTE
SQL2005的CTE
go
SQL2005的CTE
SQL2005的CTE
with t2(ID,Name,parentID,Ord,Lev)
SQL2005的CTE
as
SQL2005的CTE(select *,Ord=cast(right('0000'+rtrim(ID),4) as nvarchar(max)),Lev=cast(0 as int) from #T where ParentID=0
SQL2005的CTEunion all
SQL2005的CTEselect b.*,Ord=a.Ord+cast(right('0000'+rtrim(b.ID),4) as nvarchar(max)),Lev=cast(a.Lev+1 as int)from #T b join t2 a on b.ParentID=a.ID
SQL2005的CTE)
SQL2005的CTE
select 顯示=replicate(char(9),lev)+Name from T2 order by ord option(maxrecursion 0)--用空格替換制表符時用space(lev*2)/replicate(char(9),lev)
SQL2005的CTE
SQL2005的CTESQL2005的CTE/*
SQL2005的CTE顯示
SQL2005的CTE---------------------------------
SQL2005的CTEA
SQL2005的CTE B
SQL2005的CTE E
SQL2005的CTE C
SQL2005的CTE D
SQL2005的CTE
SQL2005的CTE(5 個資料列受到影響)
SQL2005的CTE
*/

SQL2005的CTE
SQL2005的CTE
SQL2005的CTE;
with t2
SQL2005的CTE
as
SQL2005的CTE(select *,Ord=cast(Name as nvarchar(max)),lev=0 from #T where ParentID=0
SQL2005的CTEunion all
SQL2005的CTEselect b.*,Ord=cast(a.Ord+char(9)+b.Name as nvarchar(max)),a.lev+1 from #T b join t2 a on b.ParentID=a.ID
SQL2005的CTE)
SQL2005的CTE
select
SQL2005的CTE [顯示]=Ord
SQL2005的CTE
from
SQL2005的CTE T2
SQL2005的CTE
order by ord
SQL2005的CTE
option(maxrecursion 0)
SQL2005的CTESQL2005的CTE
/*
SQL2005的CTE
SQL2005的CTE顯示
SQL2005的CTE--------------------
SQL2005的CTEA
SQL2005的CTEA B
SQL2005的CTEA B E
SQL2005的CTEA C
SQL2005的CTEA C D
SQL2005的CTE
SQL2005的CTE(5 個資料列受到影響)
SQL2005的CTE
SQL2005的CTE
*/

SQL2005的CTE
SQL2005的CTE
--2005多次调用连接时:
SQL2005的CTESQL2005的CTE/*
SQL2005的CTE;with T(COl)--可指定列名也可不指定
SQL2005的CTEas
SQL2005的CTE(......)
SQL2005的CTE,T2(Co)
SQL2005的CTEas
SQL2005的CTE(......)
SQL2005的CTEselect * from T1 a join T2 b on a.Col=b.COl
SQL2005的CTE
*/

SQL2005的CTE
SQL2005的CTE
SQL2005的CTE