1

在 Oracle 10g 数据库中,我想构建一个 SQL 查询,仅当有多个结果行时才返回结果行。

有可能吗?怎么做?

4

3 回答 3

8

您需要计算返回结果的数量,如果您不想分组,可以使用以下方法:

SELECT *
  FROM (SELECT col1,
               col2,
               COUNT(*) OVER() cnt
          FROM your_table
         WHERE <conditions> )
 WHERE cnt > 1
于 2012-06-29T09:05:09.353 回答
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子句中都相同。

于 2012-06-29T10:08:00.577 回答
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
于 2012-06-29T09:24:32.577 回答