SQL如何获取表中父子关系的缩进字符串

时间:2014-08-17 01:25:16

标签: sql sql-server

我有以下SQL Server表:

CREATE TABLE [dbo].[security_templates_exceptions_item](
    [objectid] [varchar](50) NOT NULL,
    [moduleid] [tinyint] NOT NULL,
    [type] [nchar](10) NULL,
    [viewname] [nvarchar](30) NULL,
    [itemid] [nvarchar](50) NULL,
    [description] [nvarchar](50) NOT NULL,
    [misc] [nchar](30) NULL,
    [menuid] [smallint] NOT NULL,
    [priority] [smallint] NOT NULL,
 )

此表与孩子本身有关系。

所以逻辑很容易。

priority具有以下值:

10
20
30
40

所有以0结尾的数字,如10,20等等都是父母。

如果我有

10
11
12
13

然后我知道11,12和13是10的孩子。

遵循这个逻辑我想用objectid列缩进一个字符串。

以下是包含架构和示例数据的SQL小提琴:http://sqlfiddle.com/#!6/1dc15/1

所以,如果我有以下数据:

enter image description here

我应该得到这种格式(看看objectid缩进):

enter image description here

有任何线索吗?

1 个答案:

答案 0 :(得分:0)

这是你要找的吗?

小提琴: http://sqlfiddle.com/#!6/1dc15/9/0

您可以将objectid与空格或其他任何view_name不为空的内容连接起来。

select   case when viewname is null then objectid else '......'+objectid end as objectid,
         description,
         priority
from     security_templates_exceptions_item
order by menuid, priority