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
이 함수는 "재귀 쿼리"Companies "의"SomeId "열에서 앵커와 재귀 부분 간의 유형이 일치하지 않습니다. 나는 "CAST (NULL AS uniqueidentifier)"로 "NULL AS SomeId"를 대체하여 문제를 해결할 수 있음을 알고 있습니다. 그러나 앵커는 parentCompanyId가 int인지 알 필요가없는 경우 왜 고유 식별자인지를 알아야합니까? uniqueidentifier가 객체이고 int가 값 유형이기 때문입니까?uniqueidentifier가있는 순환 CTE는 앵커에 값을 가져야합니다.
감사에서이 문제를 볼 수 있습니다. 나를 이해하는 데 큰 도움이된다. – Arion