在Oracle 10g数据库中,我想构建一个SQL查询,只有在有多个行结果时才返回结果行。
是否可能以及如何?
答案 0 :(得分:7)
你需要计算返回结果的数量,如果你不想分组,你可以使用以下内容:
SELECT *
FROM (SELECT col1,
col2,
COUNT(*) OVER() cnt
FROM your_table
WHERE <conditions> )
WHERE cnt > 1
答案 1 :(得分: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
子句中都相同。
答案 2 :(得分:0)
您需要以下结果吗?
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