2015-12-02 66 views
0

在我的SQL查询,我想补充1一个特殊的情况,每月,例如:在SQL把每月1次,并用一个特殊的条件

Date | State | Number 
------------------------------- 
01/05/2006 | NEW | 1 
28/05/2006 | NEW | 0 
20/09/2014 | NEW | 1 
15/10/2014 | NEW | 1 
05/06/2015 | CHANGE | 0 


select CASE WHEN State = 'NEW' THEN 1 ELSE NULL END 
from tablename; 

但这里的结果是1其中State = 'NEW'

如何做到这一点,当它是'NEW'和每月?

+0

什么意思是“什么时候是新的和每个月”,只是在这个月的第一个月?请阅读[** How to ask **](http://stackoverflow.com/help/how-to-ask) \t \t \t \t [**如何创建最小,完整和可验证的示例。* *](http://stackoverflow.com/help/mcve) –

回答

0

这样的事情,也做NOT EXISTS从当月确保不早行:

select case when State = 'NEW' 
      and not exists (select 1 from tablename t2 
          where extract(month from t2.Date) = extract(month from t1.date) 
           and extract(year from t2.Date) = extract(year from t1.date) 
           and t2.date < t1.date) THEN 1 
      ELSE NULL 
     END 
from tablename t1 

编辑:现在,使用ANSI SQL的extract(year from col)来代替。

+0

Oracle支持ANSI SQL'extract(...)'函数 –

相关问题