結果をインデントする必要はありません。これは、私が思いついた最高のタイトルです。どんな助けでも大歓迎です。私は CTE 経由でこれを行うのに何時間も費やしましたが、それが進むべき道のように見えますが、私は立ち往生しています。
編集: 以下のサンプル データを Component_Job 列で並べ替えることができますが、現実の世界では、ジョブ番号はランダムであり、必ずしも使用可能な順序ではありません。
私のテーブルには以下が含まれています:
Root_Job Parent_Job Component_Job
1 1 1a
1 1 1b
1 1 1c
1 1a 1a1
1 1a 1a2
1 1b 1b1
1 1b 1b2
2 2 2a
2 2 2b
以下を返すビューを作成しようとしています:
Root_Job Parent_Job Component_Job
1 1 1a
1 1a 1a1
1 1a 1a2
1 1 1b
1 1b 1b1
1 1b 1b2
1 1 1c
2 2 2a
2 2 2b
私が達成しようとしている返品注文を明確にするために:
1
1a
1a1
1a2
1b
1b1
1b2
1c
2
2a
2b
最後に、私が試みているが何もしていないCTEは次のとおりです。
with BOM (Root_job, parent_job, component_Job)
as
(
-- Anchor member definition
SELECT e.Root_Job, e.Parent_Job, e.Component_Job
FROM Bill_Of_Jobs AS e
WHERE Root_Job = Parent_Job
UNION ALL
-- Recursive member definition
SELECT e.Root_Job, e.Parent_Job, e.Component_Job
FROM Bill_Of_Jobs AS e
INNER JOIN bill_of_Jobs AS d
ON e.parent_Job = d.Component_Job
)
-- Statement that executes the CTE
SELECT * from BOM