sql - Return Most Recent Time -
i have complex join procedure need return recent time, on x date x patient.
select convert(varchar(36), apt.uniqueid), apt.atime, rtrim(apt.apwork) + ' ' + rtrim(apt.apwrk2), aps.apsdispchar, rtrim(ltrim(aps.apstextcolor)), rtrim(ltrim(aps.apsbgcolor)), apt.apid, dbo.makecasestring(pat.pfname, pat.pfnamcase) + ' ' + dbo.makecasestring(pat.plname, pat.plnamcase), apn.apnentrytime apt inner join pat on pat.pid = apt.apid inner join aps on ((apt.aconfstat not null , apt.aconfstat = aps.apsid) or (apt.aconfstat null , aps.apsid = ' ')) inner join apn on (apn.apnpid = apt.apid , apn.apndate = apt.adate , apn.apntime = apt.atime) apt.adid = @provideridparam , apt.adate = @dateparam , apn.apnentrytime in (select max(apn.apnentrytime) apn) order apt.atime asc currently i'm using:
apn.apnentrytime in (select max(apn.apnentrytime) apn) it works data, while other data (that's large), wont work.
you need correlate subquery outer query on patient id (what i'm assuming pat.pid).
select cast(apt.uniqueid varchar(36)) , apt.atime , rtrim(apt.apwork) + ' ' + rtrim(apt.apwrk2) , aps.apsdispchar , rtrim(ltrim(aps.apstextcolor)) , rtrim(ltrim(aps.apsbgcolor)) , apt.apid , dbo.makecasestring(pat.pfname, pat.pfnamcase) + ' ' + dbo.makecasestring(pat.plname, pat.plnamcase) , apn.apnentrytime apt inner join pat on pat.pid = apt.apid inner join aps on ((apt.aconfstat not null , apt.aconfstat = aps.apsid) or (apt.aconfstat null , aps.apsid = ' ')) inner join apn on (apn.apnpid = apt.apid , apn.apndate = apt.adate , apn.apntime = apt.atime) apt.adid = @provideridparam , apt.adate = @dateparam , apn.apnentrytime in ( select max(apn1.apnentrytime) apn apn1 join apt apt1 on apt1.apid = apn1.apnpid , apt1.adate = apn1.apndate , apt1.atime = apn1.apntime apt1.apid = pat.pid ) order apt.atime asc
Comments
Post a Comment