根据if条件运行select

时间:2017-08-31 08:48:41

标签: oracle

在发布这个问题之前,我已经查看了案例,但它并没有解决我的问题。

根据是否是本周的星期一,我需要从表中获取一些数据。我可以在PL / SQL块中编写它,但我希望在纯SQL中实现它。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

to_char(sysdate-3, 'DAY')将返回MONDAY您可以修剪它并使用decode返回与null不同的值:

select decode(TRIM(to_char(sysdate-3, 'DAY')),'MONDAY', 1, null) from dual

修改

你可以在哪里

where decode(to_char(sysdate-3, 'fmDAY'), 'MONDAY', 1, null) =1 

* sysdate-3之所以被选中,是因为今天是星期四

答案 1 :(得分:0)

假设这些表具有相同的结构,这将起作用:

select * from table1
where to_char(sysdate, 'DY') = 'MON'
union all
select * from table2
where to_char(sysdate, 'DY') != 'MON'

使用这样的日文字取决于您的NLS设置。因此,如果需要,请调整解决方案。