AccountsCreatedThisYear

AccountsCreatedThisYear

我有一个存储过程,可以提取数据并在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/

10-16 19:05