sqlA 和 sqlB
我需要根据当前时间判断执行哪个sql
这个逻辑能在一条sql里完成吗?sqlA 和 sqlB
是结构一样的 select 语句或者可以这样理解:
两表的表结构一模一样,然后需要根据条件,比如时间,选择查询某个表。这中需求怎样在一条sql中完成?

解决方案 »

  1.   

    不明白?
    想要的是查询结果还是想要sql语句?
    想要sql语句就帖表结构出来
      

  2.   

    难道是这种:
    select * from (...sqlA...) where 时间判断
    union all
    select * from (...sqlB...) where 时间判断
      

  3.   

    一条sql好像不好弄,整个存储过程不可以吗?
    等高手...
      

  4.   

    sqlA: select a from tab;
    sqlB: select b from tab;select decode(to_char(sysdate, 'yyyymmdd'), '20090101', a, b) from tab;
      

  5.   

    补充一下:
    是这样
    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的结果,判断条件并不重要。
      

  6.   


    如果返回的列一样的话,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
      

  7.   

    sqlA: select a,b,c from tabA; 
    sqlB: select a,b,c from tabB; 我这可能不只这样,是按月分表 数据量也比较大 实际的查询语句也不是上面的 那么简单我是想根据当前月份 判断查哪个表的如果union 的话,估计会比较慢,而且有不必要的查询操作啊实在不行,只能把这个逻辑放进代码了,而不放在数据库了。