我有下表:
已创建包含日期的列 状态列,其值为open,closed,resolved
我想只获得处于开放状态且创建价值的上个月的记录。如果年度改变,我也要小心。喜欢创建日期是2016-12-31而当前日期是2017-01-01
以下是我的询问:
select (case when Status_Flag = 'open' and (DATEPART(MONTH,Created) = DATEPART(Month,GetDate()) -1 OR
(DATEPART(MONTH,Created) = DATEPART(Month,GetDate()) -1 OR DATEPART(YEAR,Created) < DATEPART(YEAR,GetDate()))) then 1 else 0 end) as Inc_BroughtForward from <table_name> where status = 'open'
如果我的逻辑是正确的,请告诉我?
答案 0 :(得分:0)
select *
from <table_name>
where status = 'open'
and Created between DATEADD(month, -2, DATEADD(day, 1, EOMONTH(GETDATE()))) and DATEADD(day, -1, DATEADD(month, -1, DATEADD(day, 1, (EOMONTH(GETDATE())))))
答案 1 :(得分:0)
找到一个解决方案:
select
(case when Status = 'open' and DATEDIFF(MONTH, Created, GETDATE()) = 1 then 1 else 0 end) as Inc_BroughtForward
from <table_name>