;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
Daher wird diese Funktion einen Fehler ausgeben: "Typen stimmen nicht überein zwischen dem Anker und dem rekursiven Teil in der Spalte "SomeId" der rekursiven Abfrage "Firmen"". Ich weiß, dass ich das Problem beheben kann, indem ich einfach "NULL AS SomeId" durch "CAST(NULL AS uniqueidentifier)" ersetze. Aber warum muss der Anker wissen, dass es sich um einen uniqueidentifier handelt, wenn die parentCompanyId nicht wissen muss, dass es sich um eine int handelt? Liegt es daran, dass ein Uniqueidentifier ein Objekt ist und int ein Wertetyp?