我有一个存储过程,可以提取数据并在Date上加入去年的数据。问题在于,由于没有2011年2月29日的数据,因此无法结合当前年份的数据。还有其他人遇到过此问题吗?任何人都对如何解决它有任何想法?
这是存储过程:
SELECT
--b.Date_Rep AS Date_Rep,
SUM(b.AccountsCreatedThisYear) AS AccountsCreatedThisYearTot,
SUM(a.AccountsCreatedThisYear) AS AccountsCreatedLastYearTot,
FROM Report2011.dbo.T_Report_01 b WITH (NOLOCK) --This year
LEFT JOIN Report2011.dbo.T_Report_01 a WITH (NOLOCK) ON DATEADD(yyyy,-1,b.Date_Rep) = a.date_rep --Last year
WHERE (a.Date_Rep BETWEEN DATEADD(year, -1,@StartDate) AND DATEADD(year, -1,@EndDate))
最佳答案
首先,我不会在左联接外侧的表中的列上执行where
子句。试试这个,代替:
SELECT SUM(b.AccountsCreatedThisYear) AS AccountsCreatedThisYearTot,
SUM(a.AccountsCreatedThisYear) AS AccountsCreatedLastYearTot,
FROM Report2011.dbo.T_Report_01 b WITH (NOLOCK) --This year
LEFT JOIN Report2011.dbo.T_Report_01 a WITH (NOLOCK)
ON DATEADD(yyyy,-1,b.Date_Rep) = a.date_rep --Last year
WHERE b.Date_Rep BETWEEN @StartDate AND @EndDate
关于sql - 2月29日与上一年的2月28日相比,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9517700/