Используйте CROSS APPLY
для определения псевдонима в предложении FROM
. Тогда он будет доступен по всему запросу:
SELECT . . .,
v.StartDate,
(CASE WHEN up.PackagePlanId = 1 THEN DATEADD(month, 1, v.StartDate)
ELSE DATEADD(YEAR, 1, v.StartDate)
END) as EndDate,
FROM usrPlan up . . .
detail d . . .
CROSS APPLY
(VALUES (CASE WHEN GETDATE() > d.PeriodEndDate THEN GETDATE()
ELSE d.PeriodEndDate
END)
) v(StartDate)
Обратите внимание, что я добавил псевдонимы таблиц, чтобы легче было писать и читать запрос.