Я пытаюсь создать выражение для случая, которое вычисляет дату RMD человека (требуемое минимальное распределение), то есть вещи, связанные с пенсией. Я использую SQL Server 2012
Вот некоторые критерии:
Участник достигает возраста 70½ лет на дату, которая составляет 6 календарных месяцев после его 70-летия.
Если участник родился до 1 июля 1949 года, его RMD должен произойти до 1 апреля года, следующего за календарным годом, в котором он достигнет возраста 70½ лет.
Пример 1: 70 лет со дня рождения Джона приходится на 30 июня 2018 года. 30 декабря 2018 года он достигает возраста 70½ лет. В нормальных условиях его первый RMD должен быть принят до 1 апреля 2019 года; однако, поскольку этот клиент делает рассылки только 1 марта каждого года, Джон должен получить свой первый RMD (на 2018 год) до 1 марта 2019 года.
Если участник родился после 30 июня 1949 года. , их RMD должен произойти до 1 апреля года, следующего за календарным годом, в котором они достигают возраста 72 лет.
Пример 2: 1 июля 2019 года исполняется 70 лет со дня рождения Джона. 1 января 2020 года ему исполняется 70½ лет. поэтому от него не требуется принимать минимальное распределение, пока он не достигнет 72 лет. Он достигнет возраста 72 лет 1 июля 2021 года. При нормальных обстоятельствах его первый RMD должен быть принят к 1 апреля 2022 года; однако, поскольку этот клиент делает рассылки только 1 марта, Джон должен получить свой первый RMD (на 2021 год) к 1 марта 2022 года.
Моя цель - написать оператор case, который при вводе идентификатора сотрудника дает мне дату RMD.
--Birthdate before 7/1/1949
SELECT BW_ID, FIRST_NAME, LAST_NAME, BIRTHDATE, CONTROLLED_GROUP_STATUS AS 'Employment Status', DATEDIFF(year,BIRTHDATE,GETDATE()) AS 'Current Age', DATEADD(month,6,BIRTHDATE) AS '6 months after Birthdate'
FROM employee
WHERE BIRTHDATE < '7/1/1949'
Вот некоторые образцы данных. Примечание: Bw_ID = идентификатор сотрудника
Это приблизительный набросок того, что я надеюсь увидеть:
SELECT BW_ID, FIRST_NAME, LAST_NAME, 'RMD Date' =
CASE
WHEN BIRTHDATE < '7/1/1949' THEN
WHEN BIRTHDATE >= '7/1/1949' THEN
FROM EMPLOYEE as E