根据日期从数据库中取11条数据,比如日期为2007-11-06 得到的数据应该为11-01----11-11。但如果11-06前的数据不够5条的话就得向下多取一条(11-02------11-12)反之,向下的数据不够就向上取,如果向上向下都不够,那也没办法,取出所有就是了。
解决方案 »
- 在PL/SQL里自定义了两个函数A,B,为什么A调用不了B?(初学啊)
- PLSQL如何调用另一个sql以及如何传递参数
- 这个表的索引应该怎么建?
- oracle添加数据服务后还要再单独配置监听器吗
- dbca建库出错.
- 关于mysql的创建视图的语句转换成oracle里面创建视图的语句
- 在oem里有没有像创建表一样的可视化界面对创建好的表进行修改?就像sqlserver里的一样?
- 在oracle里面能不能进行与或非的操作?用什么运算符?
- ■■谁能回答谁就是高手!请问select table_name from user_tables;可以查看当前用户的表类似user_tables这样的表还有哪些?????
- oracle imp 导入中提示错误
- 关于建立异地数据库的视图
- 是否可以直接在存储过程中做sql语句的查询——求指教
select *
from (
select *
from tablename tt
where tt.mydate > = to_date(&enterdate,'yyyy-mm-dd')
order by tt.mydate
)zz
where rownum <= 11;
我倒觉得如果哪边不够的话不需要用另一边来补,没这必要
SQL还真不会写,在程序里能处理的话就到程序里处理好了
你这样的做法,会要求他的数据都是连续的。还要用到程序的判断,不是一个很好的方法。添加一个辅助的列(上面提到过),我觉得是不错的方法。
前5天后5天
union
前5到10天
union
后5到10天最后包一个rownum <= 11
(
按照日期的逆序,选出小于输入日期的前5条,
UNION
按照日期的顺序,选出大于等于输入日期的前11条,
)
里面选取11条(按照日期的顺序)2。不需要的话,就看上面的解释吧,都可以做到。
FROM
(SELECT *,
Row_Number() over (PARTITION BY Sign(date_col - SYSDATE) ORDER BY Abs(date_col - SYSDATE)) AS rn
FROM table1)
WHERE rn<=5