Oracle 10g データベースで、結果行が複数ある場合にのみ結果行を返す SQL クエリを作成したいと考えています。
それは可能ですか?
返された結果の数を数える必要があります。グループを作成したくない場合は、次を使用できます。
SELECT *
FROM (SELECT col1,
col2,
COUNT(*) OVER() cnt
FROM your_table
WHERE <conditions> )
WHERE cnt > 1
select * from
(select column1,column2,column3,
(select count(*) from table1 where '*XYZ Condition*' ) as rowCount
from table1 where '*XYZ Condition*')
where rowCount > 1;
クエリの両方の場所に同じ条件を配置する必要があるだけです。つまり、「XYZ 条件」は両方のwhere
句で同じです。
次のような結果が必要ですか?
c1 c2
1 AA
1 BB
2 CC
結果:
c1 c2
1 AA,BB
2 CC
以下はあなたの要件を満たすことができます。
select c1,ltrim(sys_connect_by_path(c2,','),',') from (
select c1,c2, row_number() over(partition by c1 order by c2)rn,
count(*) over(partition by id ) cnt from XXX -- XXX: your table
) a where level=cnt
start with rn=1 connect by prior c1=c1 and prior rn=rn-1