0

我正在尝试从自引用表中生成一个类似于 Cat1/Cat2/Cat3 等的字符串。

数据如下所示:

类别表

类别 ID、[名称]、父 ID

1,根,0

2、1 类、1 类

3、2 类、2 类

4、3 类、3 类

5、4 类、1 类

六类、五类、五类

我想屈服:

根/Cat1/Cat2/Cat3 根/Cat4/Cat5

我如何在 sql server 中执行此操作?

4

2 回答 2

1

您可以使用 CTE

SQL 提琴手

WITH cte AS (
  SELECT CategoryID,CAST(Name AS VARCHAR(4000)) AS Name 
  FROM Category 
  WHERE ParentID = 0
  UNION ALL
  SELECT c.CategoryID, CAST(e.Name + '/' + c.Name AS VARCHAR(4000))
  FROM cte e
  INNER JOIN Category c 
    ON c.ParentID = e.CategoryID
)
SELECT c1.Name
FrOM cte c1
WHERE NOT EXISTS (SELECT 1 FROM cte c2 where c1.name <> c2.name AND c2.name like c1.NAME + '%')
于 2013-06-21T18:48:28.400 回答
0

尝试这个 :

DECLARE @str VARCHAR(255) --Or whatever length you need
SET @str = ''

SELECT @str = @str + [Name] + '/' FROM CategoryTable

SET @str = SUBSTRING(@str,0,LEN(@str)) -- remove the trailing '/'
PRINT @str
于 2013-06-21T18:46:46.570 回答