Я рассчитываю амортизацию транспортных средств и мне нужно получить значения предыдущего месяца, если они существуют.
Я написал оператор case в предложении where, чтобы проверить, существует ли значение.Если это так, то я хочу вычесть один месяц и использовать это значение для получения данных за предыдущие месяцы.Если он не существует, я хочу данные текущего месяца.Но это будет делать только один или другой.Я напутал, где существует?
SELECT b.*
--this is month we want to compare (For example month 45)
FROM #changes AS a
--this has all the months (for example month 1-50)
INNER JOIN work.dbo.DepreciationSchedule AS b
ON b.VehicleID = a.VehicleID
--If the previous months value exists in table b (Ex month 44), then take take that months value otherwise take the current value of table a (Ex month 45)
WHERE b.Month = CASE
WHEN EXISTS(SELECT *
FROM #changes AS innerA
WHERE innerA.month = a.month - 1)
THEN a.Month - 1
ELSE a.Month
END