私のオラクルのバージョンは10.2です。スカラーサブクエリに集計演算がある場合、それは非常に奇妙です。t_testという名前のテーブルは次のようになりました。
t_id t_name
1 1
2 1
3 2
4 2
5 3
6 3
クエリ文字列は次のようになりました。
select t1.t_id,
(select count(t_name)
from (select t2.t_name
from t_test t2
where t2.t_id=t1.t_id
group by t2.t_name)) a
from t_test t1
このクエリの結果は、
t_id a
1 3
2 3
3 3
4 3
5 3
6 3
これは非常に奇妙です。たとえば、t1.t_id=1とします。
select count(t_name)
from (select t2.t_name
from t_test t2
where t2.t_id=1
group by t2.t_name)
結果は1で、どういうわけか、「where」演算子は機能しません。結果は、次のようにクエリを配置した場合とまったく同じです。
select t1.t_id,
(select count(t_name)
from (select t2.t_name
from t_test t2
group by t2.t_name)) a
from t_test t1
なぜ?