1
;WITH Companies(pkCompanyID,name,parentCompanyID,SomeId) AS
(
SELECT
tblCompany.pkCompanyID,
tblCompany.name,
NULL,--this is a int with no value and it works in the anchor
NULL AS SomeId--But this uniqueidentifier do not work why?
FROM
tblCompany
WHERE
tblCompany.fkCompToCompID IS NULL
UNION ALL
SELECT
tblCompany.pkCompanyID,
tblCompany.name,
tblCompany.fkCompToCompID,
NEWID()
FROM
tblCompany
JOIN Companies ON tblCompany.fkCompToCompID=Companies.pkCompanyID
)
SELECT
*
FROM
Companies
所以这个功能会给出错误值:公司“‘‘递归查询’SomeId”类型不锚和列递归部分之间的匹配’。我知道我可以用“CAST(NULL AS uniqueidentifier)”替换“NULL AS SomeId”来修复它。但是,为什么当parentCompanyId不需要知道它是一个int时,锚点需要知道它是唯一标识符?是否因为uniqueidentifier是一个对象而int是一个值类型?递归CTE具有唯一标识符必须在锚
感谢你的答案看到这一点。帮助我理解 – Arion 2011-12-19 14:51:08