1

oracle で自己外部結合を行うにはどうすればよいですか? (私は11gを使用しています)

どこでも (+) と left/right の多くの組み合わせで次のクエリを試しました。

select t1.name, t1.status, t2.status
from my_tab t1 outer join my_tab t2
on t1.name = t2.name
where t1.year= X and t2.year = Y and t1.status <> t2.status;

期待される結果 : X 年と Y 年の間にステータスが変わった人、新しい人、姿を消した人

ステータスが変更された人のみ取得


オラクルのドキュメントによると

(+) 演算子を使用してテーブルをそれ自体に外部結合することはできません

(+) 演算子にのみ適用されますか、それとも「テーブルをそれ自体に外部結合することはできません」と読むべきですか?

4

1 に答える 1

0

汚い解決策:

--request presented above
select t1.name, t1.status as status_X, t2.status as status_Y
from my_tab t1 join my_tab t2
on t1.name = t2.name
where t1.year = X and t2.year = Y and t1.status <> t2.status

union
--stuff that disappeared from X to Y
select name, status, null
from my_tab
where year = X and name not in (select name from my_tab where year = Y)

union
--new stuff
select name, null, status
from my_tab
where year = Y and name not in (select name from my_tab where year = X)
于 2012-11-06T16:55:03.903 に答える