Ich habe diese allgemeine Tabelle Ausdruck, die Daten für Kunden, die Dienste erhalten haben S nach '2015-07-01' und die neueste Registrierung 'e' Datum sollte vor '2015 sein -07-01 ', aber die Ergebnismenge enthält Kunden, die nach' 2015-07-01 'erneut registriert wurden, da sie auch mehrere Registrierungsdienste haben. Nicht sicher, welche Klausel enthalten sein soll, um sicherzustellen, dass das LETZTE Registrierungsbeginndatum vor '2015-07-01' liegt.So erhalten Sie die neuesten Daten mit CTE
WITH PhoneLog AS
(
select s.ProvidedToEntityID,
concat (c.FirstName,' ', C.LastName) as ClientName,
ecp.CellPhone,
ecp.HomePhone,
case ecp.PhoneVoiceOptIn
when 1 then 'Yes'
when 2 then 'No'
Else 'Unknown'
End as ContactViaPhone,
S.BeginDate ServiceStart,
e.BeginDate EnrollmentBeginDate,
case
when Dateadd(YY,Datediff(YY,c.birthdate,getdate()), c.birthdate)> getdate()
then datediff(YY,birthdate,getdate())
else datediff(YY,birthdate,getdate())
end as 'Current Age',
e.X_ProgramStatus as 'program Status',
ROW_NUMBER() over (Partition by s.providedtoEntityID order By s.begindate Desc) as ClientCount
from
Client c
Join Service s on c.EntityID = s.ProvidedByEntityID
join servicetype st on s.ServiceTypeID = st.ServiceTypeID
join Enrollmentmember Em on c.EntityID = em.ClientID
join enrollment e on em.EnrollmentID = e.EnrollmentID
join Entitycontactpreference ecp on c.entityid = ecp.entityid
where s.BeginDate >= '2015-07-01'
and e.BeginDate < '2015-07-01'
--and s.BeginDate>e.BeginDate
and ecp.PhoneVoiceOptIn = 1
)
SELECT
ProvidedToEntityID,
ClientName,
[Current Age],
cellphone,
Homephone,
ContactViaPhone,
ServiceStart,
EnrollmentBeginDate,
ClientCount,
[program Status]
FROM
PhoneLog
WHERE
ClientCount = 1
bin ich nicht sicher, warum Sie einen CTE verwenden. Es scheint nicht, dass es etwas für dich hinzufügt. Ich würde empfehlen, eine Art von ROW_NUMBER OVER (Partition durch Client-ID ORDER BY ENTROLLMENT DESC) hinzufügen RNK ... dann Filter auf nur RNK1, um spätestens zu bekommen. –
Können Sie Beispieldaten und erwartete Ergebnisse bereitstellen? – Xedni