根据月份和年份以及状态获取上一年的记录
Posted
技术标签:
【中文标题】根据月份和年份以及状态获取上一年的记录【英文标题】:get records from previous year based on month and year and status 【发布时间】:2017-05-30 11:52:06 【问题描述】:我有下表:
创建的具有日期的列 具有打开、关闭、已解决等值的状态列
我只想获取那些处于打开状态并且创造价值是上个月的记录。如果年份也发生变化,我想注意一下。点赞创建日期为 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'
请告诉我我的逻辑是否正确?
【问题讨论】:
【参考方案1】: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())))))
【讨论】:
【参考方案2】:找到一个解决方案:
select
(case when Status = 'open' and DATEDIFF(MONTH, Created, GETDATE()) = 1 then 1 else 0 end) as Inc_BroughtForward
from <table_name>
【讨论】:
以上是关于根据月份和年份以及状态获取上一年的记录的主要内容,如果未能解决你的问题,请参考以下文章