Как написать выражение case, которое вычисляет конкретную дату c? - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь создать выражение для случая, которое вычисляет дату 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 = идентификатор сотрудника enter image description here

Это приблизительный набросок того, что я надеюсь увидеть:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...