我不知道如何选择查询递归。5 @. r# i; s$ o% H6 r* m" K* e
id idparent jobNO-------------------------------- 3 如何使用SqlServer取得这样的结果 - F* O Y+ H' l6 t id idparent jobNO ListJob---------------------------------------- $ |6 v$ M2 V4 q4 ^" U. z; d) n解决方案: 5 \& j2 {9 d* W- r. }# r3 Z9 |2 s- j
您需要使用递归公共表达式。 - k( L5 H2 k0 e- s# e* s8 a网上有很多有用的文章。 8 M7 v) ~/ p! B- q有用的链接 . R! ~6 D8 }+ r简单谈谈:SQL Server CTE基础2 h0 h6 n- j# C$ s& o
blog.sqlauthority:递归CTE, F" r2 `$ u* K* \2 @- `; Y
这是你问题的解决方案: * y6 ^" ~% K, [ CREATE TABLE #TEST ( id int not null, idparent int not null, jobno int not null )INSERT INTO #Test VALUES (1、0、1)、 (2、1、2)、 (3、1、3)、 (4、0、4)、 (5、4、5)、 (6、5、6)WITH CTE AS (-- This is end of the recursion: Select items with no parent SELECT id,idparent,jobno,CONVERT(VARCHAR(MAX),jobno) AS ListJob FROM #Test WHERE idParent = 0 UNION ALL-- This is the recursive part: It joins to CTE SELECT t.id,t.idparent,t.jobno, c.ListJob '/' CONVERT(VARCHAR(MAX),t.jobno) AS ListJob FROM #Test t INNER JOIN CTE c ON t.idParent = c.id ) SELECT * FROM CTE ORDER BY id;