以下のような3階層のデータについて、以下の結果を得たいと思っています。再帰クエリを使用することになるかと思うのですが、どのようにクエリを作成すればよいでしょうか。アドバイスをお願いいたします。
<データ>
氏名 上司の氏名 階層
田中 Null 1
山田 田中 2
佐藤 山田 3
高田 山田 3
<結果>
氏名 部下の氏名
田中 山田
田中 佐藤
田中 高田
山田 佐藤
山田 高田
佐藤 Null
高田 Null
※ 部下の氏名は直下の部下だけでなく、直下の部下の、その下まで結果として返したい。
No.1ベストアンサー
- 回答日時:
通常のCTEでは直前の階層をもとに次の階層のデータを返すという繰り返しになるため、今回の目的の結果にはなりません。
また、最後の2行(部下がいない)は、CTEに外部結合が認められないので出すことができません。
したがって、すべてをアンカーメンバーとして最後の2行は後で付加する方式で考えると以下のようになると思います。
WITH 階層データ AS
(SELECT 上司の氏名,氏名,階層,上司の氏名 元の上司, 階層 元の階層
FROM データ
WHERE 上司の氏名 IS NOT NULL
UNION ALL
SELECT d.上司の氏名,d.氏名,d.階層, h.元の上司,h.階層
FROM データ d
INNER JOIN 階層データ h ON h.氏名=d.上司の氏名)
SELECT 元の上司,氏名
FROM
(SELECT 元の上司,氏名,元の階層,階層
FROM 階層データ
UNION ALL
SELECT 氏名,NULL,階層+1,階層+1
FROM データ
WHERE 氏名 NOT IN
(SELECT ISNULL(上司の氏名,'') FROM データ)
) tmp
ORDER BY 元の階層,階層
回答ありがとうございます。
クエリを理解するのに少し時間がかかりそうです。実際にクエリを実行してみて、仕組みを理解できるようにしたいと思います。取り急ぎお礼させていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCEL 関数を教えてください。(A列の同じ値が複数ある場合vlookupで出来ますか) 4 2022/12/07 20:54
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
- 野球 高校野球の話 1 2022/08/18 09:54
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Excel(エクセル) エクセル 関数 指定の繰り返しの回数 以降(以前)を削除するには、 2 2022/04/24 10:29
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- 野球 日本代表 これで世界一ですか 2 2022/11/11 05:59
- 野球 世界一ですか 4 2022/11/11 06:17
- その他(IT・Webサービス) メニューについて 3 2022/07/12 16:06
- 野球 世界一ですか 2 2022/11/11 06:15
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「弊社○○のご紹介で初めてご連...
-
来月(6月)のシフトが出まし...
-
50~60代男性上司を持つ、30~4...
-
飲み会で泥酔、記憶がないまま...
-
無災害目標時間の計算
-
「抱きたい」ってどういう意味...
-
「同行」は失礼な言葉でしょうか
-
こんにちは、よろしくお願いし...
-
仕事のミス、明日にでも報告す...
-
上司の冗談を本気で受け止めて...
-
今日、いつも苗字で呼んでくる...
-
FAX送信を上司に頼まれた場合
-
飲み会のお釣りの返し方
-
優しい人を怒らせてしまったこ...
-
「いじめたくなる」と言われた...
-
これは脈ありの可能性あります...
-
部下の昇格推薦状について
-
好きな人に蹴られました 会社の...
-
上司に返事をするとき
-
○はげてる上司が自虐的なボケを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「弊社○○のご紹介で初めてご連...
-
50~60代男性上司を持つ、30~4...
-
無災害目標時間の計算
-
飲み会で泥酔、記憶がないまま...
-
「いじめたくなる」と言われた...
-
「抱きたい」ってどういう意味...
-
来られました いらっしゃいました
-
自分のことを自分の苗字で呼ぶ
-
「同行」は失礼な言葉でしょうか
-
FAX送信を上司に頼まれた場合
-
優しい人を怒らせてしまったこ...
-
上司からの既読は付くが、LINE...
-
上司に返事をするとき
-
上司から電話があったのですが...
-
メールの宛名の冒頭に書いてあ...
-
メールでの返事、「顧客上司」...
-
鉄くずの売却金を独り占めした...
-
○はげてる上司が自虐的なボケを...
-
こんにちは、よろしくお願いし...
-
彼氏がいるのに、上司が気になる
おすすめ情報