sqlA 和 sqlB
我需要根据当前时间判断执行哪个sql
这个逻辑能在一条sql里完成吗?sqlA 和 sqlB
是结构一样的 select 语句或者可以这样理解:
两表的表结构一模一样,然后需要根据条件,比如时间,选择查询某个表。这中需求怎样在一条sql中完成?
我需要根据当前时间判断执行哪个sql
这个逻辑能在一条sql里完成吗?sqlA 和 sqlB
是结构一样的 select 语句或者可以这样理解:
两表的表结构一模一样,然后需要根据条件,比如时间,选择查询某个表。这中需求怎样在一条sql中完成?
解决方案 »
- 两个数据库的相同表数据查询,求大神解决
- 关于数据库服务器内存分配DBA请进,在线等。。。
- 求助,刚装的oracle10g,OracleServiceORACLE服务无法启动!
- 急求,一条sql语句的优化
- VB6.0 采用ado 的方式連接 oracle 8.1.6
- 使用oradim启动oracle服务的问题
- ora-00903错误 表名无效??
- ORA-02041:客户数据库未开始一个事务处理 问题
- 考试将一张表的行记录拉成列记录如何用一条sql语句实现?比如:
- dmp文件导入oracle数据库时导入到一半时就停了,然后报这些错误,新手不太懂这个
- PL/SQL是做什么的?
- 面试题,请高手们看看
想要的是查询结果还是想要sql语句?
想要sql语句就帖表结构出来
select * from (...sqlA...) where 时间判断
union all
select * from (...sqlB...) where 时间判断
等高手...
sqlB: select b from tab;select decode(to_char(sysdate, 'yyyymmdd'), '20090101', a, b) from tab;
是这样
sqlA: select a,b,c from tabA;
sqlB: select a,b,c from tabB; 然后根据时间决定执行哪条sqlif true then
sqlA
else
sqlB
end if如何用一条sql完成上面的逻辑,如果是true返回sqlA的结果,如果false返回sqlB的结果,判断条件并不重要。
如果返回的列一样的话,3楼的办法可以:SQL> select * from ( select count(*) from emp ) where sysdate < to_date('2009-2-16', 'yyyy-mm-dd')
2 union all
3 select * from ( select count(*) from t1 )where sysdate >= to_date('2009-2-16', 'yyyy-mm-dd'); COUNT(*)
----------
20001
sqlB: select a,b,c from tabB; 我这可能不只这样,是按月分表 数据量也比较大 实际的查询语句也不是上面的 那么简单我是想根据当前月份 判断查哪个表的如果union 的话,估计会比较慢,而且有不必要的查询操作啊实在不行,只能把这个逻辑放进代码了,而不放在数据库了。