【发布时间】:2016-08-18 20:10:09
【问题描述】:
即使某些月份没有数据,我也会使用 LEFT JOIN 表日历来显示月份列。如果我说tblCalendar.Year = 2016 它会起作用,因此它将为我带来当年的全部 12 个月。
但我需要从本月底开始一年的数据。
所以我正在使用数据范围
where cal.YearNum >= YEAR(GETDATE())-1 AND cal.YearNum <=YEAR(GETDATE())
AND cal.MonthNum >=MONTH(EOMONTH(GETDATE()) )+1 AND cal.MonthNum <=MONTH(GETDATE())
Bur 由于某种原因它没有给我带来任何东西。 我的查询是这样的:
with cte_Data
AS (
select Month(effectiveDate) as MonthNum
Year(EffectiveDate) as YearNum
from MyTable
where EffectiveDate >=DateAdd(yy, -1, DATEADD(d, 1, EOMONTH(GETDATE()))) AND EffectiveDate <= EOMONTH(GETDATE())
)
select *
from tblCalendar cal left join cte_Data cd ON cal.MonthNum=cd.ClrEffMonth AND cal.YearNum=cd.ClrEffYear
where cal.YearNum >= YEAR(GETDATE())-1 AND cal.YearNum <=YEAR(GETDATE())
AND cal.MonthNum >=MONTH(EOMONTH(GETDATE()) )+1 AND cal.MonthNum <=MONTH(GETDATE())
【问题讨论】:
-
EOMONTH(GETDATE())是怎么回事? eomonth 不返回一天吗?所以我们基本上只是要求当月? -
EOMONTH(GETDATE())带来当月的月底 -
所以日期范围应该是从去年9月到今年8月底
-
提供表格定义和样本数据。
标签: sql tsql reporting-services