【发布时间】:2011-04-11 15:36:17
【问题描述】:
我有一个复杂的连接过程,我需要返回 X 日期 X 患者的最近时间。
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
FROM apt INNER JOIN pat ON pat.pid = apt.apid INNER JOIN aps on ((apt.aconfstat IS NOT NULL AND apt.aconfstat = aps.apsid) OR (apt.aconfstat IS NULL AND aps.apsid = ' ')) INNER JOIN apn ON (apn.apnpid = apt.apid AND apn.apndate = apt.adate AND apn.apntime = apt.atime)
WHERE apt.adid = @ProviderIDParam AND apt.adate = @DateParam AND apn.apnentrytime IN (SELECT MAX(apn.apnentrytime) FROM apn)
ORDER BY apt.atime ASC
目前我正在使用:
apn.apnentrytime IN (SELECT MAX(apn.apnentrytime) FROM apn)
它适用于某些数据,而其他数据(相当大)则不起作用。
【问题讨论】:
-
Microsoft SQL Server 管理 2008。
-
如果不问RTRIM、LTRIM等问题,你应该把问题归结为它的核心。我想你需要一些分组,但我当然不想花几个小时来理解 pfnamcase 是什么。
-
仅供参考,大多数人只是将其称为 SQL Server 2008。您可以删除管理
-
澄清一下,一切正常,期待我的 WHERE 语句:apn.apnentrytime IN (SELECT MAX(apn.apnentrytime) FROM apn)
标签: sql