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 "にアンカーと再帰的部分の型が一致しません。私は "NULL AS Some Id"を "CAST(NULL AS uniqueidentifier)"に置き換えて修正できることを知っています。しかし、anchorは、parentCompanyIdがintであることを知る必要がないときに、それがuniqueidentifierであることを知る必要があるのはなぜですか?それはuniqueidentifierがオブジェクトでint型が値型なのか?uniqueidentifierを持つ再帰的CTEは、アンカーに値を持たなければなりません。
感謝からこれを見ることができます。私が理解するための大きな助け – Arion