В службах отчетов вы можете использовать следующее выражение для BeginDateLastYear
= DATEADD(
DateInterval.WeekOfYear,
IIF(
DATEPART(DateInterval.WeekOfYear,DATEADD(DateInterval.WeekOfYear, -52 , Parameters!BeginDate.Value))<> DATEPART(DateInterval.WeekOfYear, Parameters!BeginDate.Value) ,
-53,
-52
) ,
Parameters!BeginDate.Value
)
Кодовая логика:
Если при возвращении на 52 недели двухнедельные числа не совпадают, возвращаются на 53 недели, в противном случае возвращаются на 52 недели
В случае, если вы хотите реализовать его в SQL без использования второго параметра (SSRS имеет некоторые проблемы с каскадными параметрами)
SET @BeginDateLastYear =
DATEADD(
wk,
CASE WHEN DATEPART(wk,DATEADD(wk, -52 , @BeginDate))<> DATEPART(wk,@BeginDate)
THEN -53
ELSE -52 END,
@BeginDate
)