我试图命令一个表在层次结构视图中显示它,并减少我的C#代码的麻烦。
我创建了一个简化的表格来展示我想要实现的目标:(fiddle)。
我有什么:
| id | parent | level |
|----|--------|-------|
| 2 | (null) | 1 |
| 7 | 2 | 2 |
| 8 | 2 | 2 |
| 9 | 7 | 3 |
| 12 | 7 | 3 |
| 14 | 9 | 4 |
| 15 | 12 | 4 |
我需要什么:
| id | parent | level |
|----|--------|-------|
| 2 | (null) | 1 |
| 7 | 2 | 2 |
| 9 | 7 | 3 |
| 14 | 9 | 4 |
| 12 | 7 | 3 |
| 15 | 12 | 4 |
| 8 | 2 | 2 |
所以我能够得到这个结果并直接发布如下:
ID
--02
----07
------09
--------14
------12
--------15
----08
答案 0 :(得分:2)
这样的东西?
with MyCte as
(
select id
, parent
, level
, CAST(ID as varchar(50)) as SortOrder
from posts
where parent is null
union all
select p.id
, p.parent
, p.level
, CAST(p2.SortOrder + '.' + right('000' + CAST(p.ID as varchar(10)), 3) as varchar(50))
from posts p
inner join MyCte p2 on p2.Id = p.parent
)
select *,
replicate('-', level) + cast(id as varchar(10))
from MyCte
order by SortOrder