其目标是基于由SQL查询创建的MTD日期列表提供月初至今(MTD)报告.然而,当我们在一个月的第一天时,我的查询不起作用(日期列表不相关)
我用来创建一个月到日日期列表的查询,稍后我将在一个内部联接查询中提取月到日事务.
DECLARE @Date1 DATE, @Date2 DATE
SET @Date1 = (SELECT dateadd(mm,-1, eomonth(getdate())))
SET @Date2 = GETDATE()
SELECT DATEADD(DAY,number+1,@Date1) [Date]
FROM master..spt_values
WHERE type = 'P'AND DATEADD(DAY,number+1,@Date1) < @Date2
Order By [Date] ASC
现在我们发现自己在新的一个月的开始,我只是想要一份上个月的所有日期的 list ,即从1号到4月30号.
因此,我希望if/case子句能起到作用,但它不起作用.不知何故,这种日期比较并不奏效.下面是查询(请注意,我计划将此CASE子句添加到上面的查询中):
SELECT(CASE WHEN (SELECT GETDATE()) = (SELECT dateadd(mm, -1,dateadd(dd, +1, eomonth(getdate())))) THEN (SELECT dateadd(mm,-2,dateadd(dd, +1,eomonth(getdate())))) ELSE(SELECT dateadd(mm, -1,dateadd(dd, +1, eomonth(getdate())))) END)
所以,总而言之,我想在查询1中添加一个CASE子句,这个CASE/IIF会将今天与任何给定月份的第一天进行比较,如果今天正好是当前月份的第一天,那么只需给我上一个月的第一天.但这种比较根本行不通.