如何在 sql 查询中实现条件选择



如何从表中获取每 10 行,即第 10 行、第 20 行等,但如果该表中的行少于 10 行,它应该获取最后一行。

这可能是此问题中存在的此查询的高级形式 -如何选择第 10 名、第 20 名、第 30 名 ...另一个选择查询的结果行

我已经为选择每 10 行做了这样的事情 -

select case_id  
from 
  (select case_id,rownum as seq 
   from table 
   where from = 'A' and to ='B' 
   order by ID
   )
where mod(seq,10) = 0

但是,如果内部查询的结果少于 10 行,则它应该获取最后一行。

OBS: 数据库 - Oracle 12c

SELECT ColumnA,
       ColumnB,
       ColumnC
FROM   ( 
  SELECT ROWNUM rn,
         COUNT(*) OVER ( ORDER BY NULL ) mx,
         q.ColumnA,
         q.ColumnB,
         q.ColumnC
  FROM   (
    SELECT ColumnA,
           ColumnB,
           ColumnC
    FROM   your_table
    ORDER BY ColumnA
  ) q
)
WHERE  MOD( rn, 10 ) = 0
OR     ( mx = rn AND mx < 10 );

相关内容

  • 没有找到相关文章

最新更新