select MODULE_ID,MODULE_NAME ,(select MODULE_ID,MODULE_NAME from table b where b.SUPMODULE_ID=a.MODULE_ID) from table a

解决方案 »

  1.   

    --测试数据
    DECLARE @t TABLE(ID char(3),PID char(3),Name nvarchar(10))
    INSERT @t SELECT '001',NULL ,'山东省'
    UNION ALL SELECT '002','001','烟台市'
    UNION ALL SELECT '004','002','招远市'
    UNION ALL SELECT '003','001','青岛市'
    UNION ALL SELECT '005',NULL ,'四会市'
    UNION ALL SELECT '006','005','清远市'
    UNION ALL SELECT '007','006','小分市'--深度排序显示处理
    --生成每个节点的编码累计(相同当单编号法的编码)
    DECLARE @t_Level TABLE(ID char(3),Level int,Sort varchar(8000))
    DECLARE @Level int
    SET @Level=0
    INSERT @t_Level SELECT ID,@Level,ID
    FROM @t
    WHERE PID IS NULL
    WHILE @@ROWCOUNT>0
    BEGIN
    SET @Level=@Level+1
    INSERT @t_Level SELECT a.ID,@Level,b.Sort+a.ID
    FROM @t a,@t_Level b
    WHERE a.PID=b.ID
    AND b.Level=@Level-1
    END--显示结果
    SELECT SPACE(b.Level*2)+'|--'+a.Name
    FROM @t a,@t_Level b
    WHERE a.ID=b.ID
    ORDER BY b.Sort
    /*--结果
    |--山东省
      |--烟台市
        |--招远市
      |--青岛市
    |--四会市
      |--清远市
        |--小分市
    --*/
      

  2.   

    select [MODULE_NAME] from 
    (
    select [MODULE_NAME],ltrim([MODULE_ID]) as ord from @T where [SUPMODULE_ID]=0
    union all
    select [MODULE_NAME],ltrim([SUPMODULE_ID])+ltrim([MODULE_ID])  from @T where [SUPMODULE_ID]<>0
    ) a 
    order by ord
      

  3.   

    用SQL05的CTE
    --> --> 
     
    if not object_id('Tempdb..#T') is null
    drop table #T
    Go
    Create table #T([MODULE_ID] int,[MODULE_NAME] nvarchar(6),[SUPMODULE_ID] int)
    Insert #T
    select 1,N'权限管理',0 union all
    select 2,N'角色管理',1 union all
    select 3,N'财务管理',0 union all
    select 4,N'日常开销管理',3
    Go
    ;with cte as
    (Select *,cast(right(100+[MODULE_ID],2) as nvarchar(100) ) as path1 from #T where [SUPMODULE_ID]=0
    union all
    select t.*,cast(c.path1+right(100+t.[MODULE_ID],2) as nvarchar(100)) as path1 from #T t inner join cte c on t.[SUPMODULE_ID]=c.[MODULE_ID] )
    select * from cte order by Path1 option( MAXRECURSION 0) 
    4 個資料列受到影響)
    MODULE_ID   MODULE_NAME SUPMODULE_ID path1
    ----------- ----------- ------------ ----------------------------------------------------------------------------------------------------
    1           权限管理        0            01
    2           角色管理        1            0102
    3           财务管理        0            03
    4           日常开销管理      3            0304(4 個資料列受到影響)
      

  4.   

    CSDN牛人是多。。佩服。各位。。