完整的SQL新手,请亲切。我有以下声明:SELECT DISTINCT创建多行
SELECT DISTINCT
tTMPO."OperationRecordID"
, tTMPO."CasenoteNumber"
, tTMPO."DateTimeBooked"
, tSPPS."StartDate"
, AEAdm."Visit Date"
, AEAdm."Visit Time"
, AEAdm."Episode Number"
, AEAdm.[Visit Number]
FROM
(("TheatreLive"."dbo"."tblSPPlannedSession" tSPPS
LEFT OUTER JOIN
"TheatreLive"."dbo"."tblTMPlannedOperation" tTMPO ON tSPPS."SessionRecordID" = tTMPO."SessionRecordID")
LEFT OUTER JOIN
"TheatreLive"."dbo"."tblTMActualOperation" tTMAO ON tTMPO."OperationRecordID" = tTMAO."OperationRecordID")
LEFT OUTER JOIN
"TheatreLive"."dbo"."cavAEAdmissions" AEAdm ON tTMAO."CasenoteNumber"=AEAdm."CRN" COLLATE DATABASE_DEFAULT
WHERE
tSPPS."StartDate" < DateAdd(day, 2, AEAdm."Visit Date")
AND AEAdm."Visit Date" < tSPPS."StartDate"
我用DISTINCT
但是注意到了OperationRecordID
当出现多个集数出现多个行。我尝试添加一个SELECT TOP 1
,但需要添加运行异常缓慢的WHERE
子句中的完整逻辑。
WHERE
条款是为了缩小结果集,因此它只是寻找相互在2天内的日期。
本质上,对于每个不同的OperationRecordID
我需要最新的情节编号,并且如果出现多于1个访问编号,那么最高访问编号也是。这两个都应该能够通过MAX
子句进行选择。
想法?
'distinct'适用于整个集合,而不是任何单个列。 – jpw
正如@jpw所说,这是预料之中的。你可能想要'分组'。 – leppie
您需要按人排队 – Galma88