根据月份,年份和状态获取上一年的记录

时间:2017-05-30 11:52:07

标签: sql-server tsql

我有下表:

已创建包含日期的列 状态列,其值为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'

如果我的逻辑是正确的,请告诉我?

2 个答案:

答案 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>
相关问题