当前位置: 代码迷 >> SQL >> oracle回来偶数行和记录大于n的sql
  详细解决方案

oracle回来偶数行和记录大于n的sql

热度:96   发布时间:2016-05-05 11:04:47.0
oracle返回偶数行和记录大于n的sql

返回记录大于n的sql:

select?count(phone)?from?表名?group?by?phone?having?count(phone)>=某值

?

要求:

查询Oracle表中的数据个数为奇数个时,自动加一个空白行,返回偶数个数据;如果表中的数据为偶数个时,直接返回偶数的所有行。

一、在数据库中,新建一个表,如下:

  1. create?table?MONTHSNUM??
  2. (??
  3. ??MONTHS?NUMBER??
  4. )??

二、新增一行数据;

  1. insert?into?monthsnum?values(1);??

三、执行SQL:

  1. select?*??
  2. ?from?(select?aa.*,?mod(bb.countnum,?2)?num??
  3. ?????????from?(select?a.*,?rownum?rownum2??
  4. ?????????????????from?(select?rownum?rownum1,?t.months??
  5. ?????????????????????????from?monthsnum?t??
  6. ???????????????????????union??
  7. ???????????????????????select?to_number('')?rownum1,?to_number('')?months??
  8. ?????????????????????????from?dual)?a)?aa,??
  9. ??????????????(select?count(*)?+?1?countnum?from?monthsnum?t)?bb??
  10. ????????order?by?aa.rownum2)??
  11. where?rownum?<=?(case?when?num?=?0?then?rownum?else??
  12. ???????(select?count(*)?countnum?from?monthsnum?t)?end)????

返回结果:

说明:如果数据行数为奇数时,补一个空白行,使其为行数为偶数。

四、再新增一行数据;

  1. insert?into?monthsnum?values(2);??

五、再执行第三步的SQL

返回结果:

说明:如果数据行数为偶数时,直接返回数据行的所有数据。

  相关解决方案