Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 层次表查询_Sql Server 2008 - Fatal编程技术网

Sql server 2008 层次表查询

Sql server 2008 层次表查询,sql-server-2008,Sql Server 2008,我有一个如下所示的层次结构表: id child_id 1 2 2 3 2 4 3 5 3 6 3 7 4 8 4 9 4 10 如何编写查询以获得以下格式的结果: 1 |_ 2 |_ 3 | |_ 5 | |_ 6 | |_ 7 |_ 4 |_ 8 |_ 9 |_ 10 这是我能做的最好的: WITH cte AS ( SELECT id, CAST(NULL AS INT) as

我有一个如下所示的层次结构表:

id  child_id
1   2
2   3
2   4
3   5
3   6
3   7
4   8
4   9
4   10
如何编写查询以获得以下格式的结果:

1
|_ 2
   |_ 3
   |  |_ 5
   |  |_ 6
   |  |_ 7
   |_ 4
      |_ 8
      |_ 9
      |_ 10

这是我能做的最好的:

WITH cte AS (
SELECT id, CAST(NULL AS INT) as Parent, 1 AS Level, CAST(id AS varchar(255)) AS LevelChar FROM Hier WHERE id = 1
UNION ALL
SELECT child_id AS id, hier.id AS Parent, Level + 1, CAST(LevelChar + '-' + CAST(child_id AS varchar(255)) AS varchar(255)) FROM Hier 
JOIN cte ON Hier.id = cte.id
)
SELECT ISNULL(REPLICATE(Space(2) + '|',Level-1),'') + CAST(id AS Varchar(255)) FROM cte
ORDER BY LevelChar, ID

你能给我们看看你的点心吗?或者解释您尝试过的逻辑?在客户端而不是服务器端执行所有格式化工作。@RaduGheorghiu我还没有进入尝试阶段,因为我不知道如何解决这个问题。这正是我需要的