Привет. Я пытаюсь получить следующее из этого кода. Если найдено более одного совпадения, найдите запись, в которой LearnStartDate = LearnDelFAMDateFrom, оставьте пустым
select
ukprn, aimseqnumber, LearnRefNumber
,LearnDelFAMCode
,LearnDelFAMType
,LearnDelFAMDateFrom
,LearningStartDate
,CASE
when rn=1 then LearnDelFAMDateFrom
when rn <1 then ''
when (rn =1 and rn > 1) and (LearningStartDate = LearnDelFAMDateFrom) then LearnDelFAMDateFrom
else
''
end as LearnDelFAMDateFromMOD
--,CASE row_number() over(partition by d.LearnRefNumber,d.aimseqnumber order by LearnDelFAMDateFrom)
-- when 1 then LearnDelFAMDateFrom
-- when < 1 then ''
-- when > 1 and (LearningStartDate = LearnDelFAMDateFrom) then LearnDelFAMDateFrom
-- else ''
-- end as LearnDelFAMDateFromMOD2
,rn
--,LearnDelFAMDateTo
from
(select
d.ukprn,d.aimseqnumber,d.LearnRefNumber,LearnDelFAMCode,LearnDelFAMType
,convert(varchar(10),LearnDelFAMDateFrom) as LearnDelFAMDateFrom
,LearnDelFAMDateTo,LearningStartDate
,row_number() over(partition by d.LearnRefNumber,d.aimseqnumber order by LearnDelFAMDateFrom) rn
from d
left join rp
on
d.ukprn =rp.ukprn
and d.aimseqnumber=rp.AimSeqNumber
and d.LearnRefNumber=rp.LearnRefNumber
and LearnDelFAMCode=rp.ApprenticeshipContractType
left join aecld
on
d.ukprn =aecld.ukprn
and d.aimseqnumber=aecld.AimSeqNumber
and d.LearnRefNumber=aecld.learnrefnumber
where LearnDelFAMType='ACT'
) as ref
Часть кода комментария, которая включает в себя регистр с разделом by, не может быть запущена из-за того, что я не могу использовать знак больше или меньше или равен.
Если я просто использую оператор case для следующего сценария
когда (rn = 1 и rn> 1) и (LearningStartDate = LearnDelFAMDateFrom) тогда LearnDelFAMDateFrom
Это работает только для записей, когда rn> 1, когда rn = 1, это не работает.