;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 »рекурсивного запроса« Компании »». Я знаю, что могу исправить это, просто заменив «NULL AS SomeId» на «CAST (NULL AS uniqueidentifier)». Но почему якорь должен знать, что это уникальный идентификатор, когда parentCompanyId не должен знать, что это int? Это потому, что uniqueidentifier - это объект, а int - это тип значения?