这是我的产品 - 如果需要,您还可以获取每个节点的路径。更改str(x,4)调用 - 使其转换为十进制时,使主键的最大长度为4。
WITH TreePrinter(id, parent, path, prefix) AS
(
SELECT
PrimaryKey, ParentKey,
CAST(str(PrimaryKey,4) AS varchar(max)),
CAST('' AS varchar(max))
FROM YourTable
WHERE ParentKey IS NULL
UNION ALL
SELECT child.PrimaryKey, child.ParentKey,
CAST(parent.path+'/'+STR(child.PrimaryKey,4) AS varchar(max)),
CAST(parent.prefix+'-' AS varchar(max)),
FROM YourTable parent
INNER JOIN TreePrinter child ON child.id=parent.ParentKey
)
SELECT prefix+str(id) FROM TreePrinter
ORDER BY path
不错的工作。感谢您的解决方案。 – 2013-01-08 03:56:52