zoukankan      html  css  js  c++  java
  • SQL2005的CTE

    use test
    go
    if object_id('Tempdb..#T'is not null
        
    drop table #T
    create table #T(ID int,Name nvarchar(100),parentID int)
    insert #T select 1,'A',0
    insert #T select 2,'B',1
    insert #T select 3,'C',1
    insert #T select 4,'D',3
    insert #T select 5,'E',2

    go

    with t2(ID,Name,parentID,Ord,Lev)
    as
    (
    select *,Ord=cast(right('0000'+rtrim(ID),4as nvarchar(max)),Lev=cast(0 as intfrom #T where ParentID=0
    union all
    select b.*,Ord=a.Ord+cast(right('0000'+rtrim(b.ID),4as nvarchar(max)),Lev=cast(a.Lev+1 as int)from #T b join t2  a on b.ParentID=a.ID
    )
    select 顯示=replicate(char(9),lev)+Name from T2 order by ord option(maxrecursion 0)--用空格替換制表符時用space(lev*2)/replicate(char(9),lev)

    /*
    顯示
    ---------------------------------
    A
      B
        E
      C
        D

    (5 個資料列受到影響)
    */



    ;
    with t2
    as
    (
    select *,Ord=cast(Name as nvarchar(max)),lev=0 from #T where ParentID=0
    union all
    select 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 
    )
    select 
        
    [顯示]=Ord 
    from 
        T2
    order by ord 
    option(maxrecursion 0)
    /*

    顯示
    --------------------
    A
    A    B
    A    B    E
    A    C
    A    C    D

    (5 個資料列受到影響)

    */


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



  • 相关阅读:
    计算机开机启动原理
    行业术语缩写参照表
    Ghost 克隆工具使用教程
    Windows 系统常用快捷键
    MindMaster使用技巧
    工作打印机型号驱动汇总
    Android手机免ROOT卸载系统内置应用
    RTX腾讯通聊天消息备份
    Work TEL
    成功实施ITSM SLA的5个步骤
  • 原文地址:https://www.cnblogs.com/Roy_88/p/5463104.html
Copyright © 2011-2022 走看看