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