(JobPath)再帰クエリ(階層的ではない)
JobId - ParentJobId
あなたはその上のジョブ3にして、仕事を4に行くとジョブ2へのジョブ4件のリンクを見ることができるように私には、以下のデータ今
JobId - ParentId
1 2
2 3
3 4
4 2
になってしまったまで完璧に働いたからデータを取得します。
既に持っているデータを引き出さないように私のクエリに伝える方法はありますか?ここで
私の現在のクエリ
WITH JobPathTemp (JobId, ParentId, Level)
AS
(
-- Anchor member definition
SELECT j.JobId, jp.ParentJobId, 1 AS Level
FROM Job AS j
LEFT OUTER JOIN dbo.JobPath AS jp
ON j.JobId = jp.JobId
where j.JobId=1516
UNION ALL
-- Recursive member definition
SELECT j.JobId, jp.ParentJobId, Level + 1
FROM dbo.Job as j
INNER JOIN dbo.JobPath AS jp
ON j.JobId = jp.JobId
INNER JOIN JobPathTemp AS jpt
ON jpt.ParentId = jp.JobId
WHERE jp.ParentJobId <> jpt.JobId
)
ある - このソリューションが動作しないCTEを実行ステートメント
SELECT * FROM JobPathTemp
クエリはどのように見えますか?あなたはDistinctを使用できませんか? – Kell
"再帰的な共通テーブル式 'JobPathTemp'の再帰的な部分では、DISTINCT演算子は使用できません。 –