У меня есть список записей в моей таблице:Как фильтровать записи в SQL
emp_id emp_status emp_date
0001 P 1/1/2012
0001 P 3/1/2014
0001 P 4/1/2015
0001 R 3/1/2016
Пусть говорят R = уволиться и P = присутствует. В этой таблице я пытаюсь написать функцию, чтобы получить год обслуживания. Сейчас я боюсь, что я могу получить первый настоящий день (1/1/2012) для этого сотрудника и передать его в @join_Date. Однако, когда я зацикливаюсь на этой записи (используя курсор), вторая дата P заменяет первую, но мне нужна только первая дата присоединения как 1/1/2012. но теперь моя дата присоединения - 3/1/2014. Кто-нибудь знает, как я могу это исправить? Код предоставляется
Declare @join_date datetime
Declare myCursor Cursor for
Select * From t_emp_info where emp_id = @emp_id
order by emp_date desc
SET @result = 0
SET @join_date = null
OPEN myCursor
FETCH NEXT FROM myCursor INTO @emp_date, @emp_status
IF @emp_status = 'P' AND @join_date IS null
//Logic
Begin
Set @join_date = @emp_date
End
IF @emp_status = 'R' AND @join_date IS NOT null
//Logic
End
Ожидаемый результат:
@join_date = 1/1/2012
Фактический результат: @join_date = 3/1/2016
Где вы присвоить значение в join_date? – Yossi
В инструкции First If я обновил код – RedRocket
И есть ли другие места, которые касаются join_date? Попытайтесь разместить его перед объявлением курсора? – Yossi