[英]SQL Where condition for number of years
Declare int @NumberofPriorYears=2;
Declare int @currentYear=2014;
SELECT
*
FROM
MyTable a
WHERE
a.FiscalYear in (
當@NumberofPriorYears為2時,我想傳遞@currentYear-@NumberofPriorYears
(即2014、2013、2012),或者當@NumberofPriorYears
為null時,傳遞@currentYear
即2014。
感謝對此的任何幫助。
嘗試這個
Declare int @numberofyears=2;
Declare int @currentYear=2014;
set @currentYear = datepart(year,getdate())
SELECT
*
FROM
MyTable a
WHERE
datepart(year,a.FiscalYear) between @currentYear and @currentYear+@numberofYears
SELECT *
FROM MyTable a
WHERE @currentYear - a.FiscalYear <= ISNULL(@numberOfPriorYears, 0)
如果您希望能夠通過上一年而不是僅當年(例如,看到2011-2012而不是2011-2014),則可以使用BETWEEN
WHERE a.FiscalYear BETWEEN @currentYear - ISNULL(@numberOfPriorYears, 0) AND @currentYear
Declare int @numberofyears=2;
Declare int @currentYear=2014;
SELECT *
FROM MyTable a
WHERE
( YEAR(a.FiscalYear) >= YEAR(GETDATE()) - @numberofyears
AND
@numberofyears IS NOT NULL
)
OR
( YEAR(a.FiscalYear) = YEAR(GETDATE())
AND
@numberofyears IS NULL
)
你可以使用范圍嗎?
a.FiscalYear >= @currentYear-isnull(@NumberofPriorYears,0)
and a.FiscalYear < @currentYear+1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.