我拥有表格患者,服务,PatientStatus,状态 - 患者可以有多种服务区分的状态。如何更好地编写此SQL?
我想构建一个视图,为每个服务和每个患者显示他们的当前状态,即使他们没有该服务的状态。
我有一些SQL这样做,但我可以写得更好吗? (我主要是担心在与1 = 1患者的内部连接)
这里的SQL:
select
p.Code,
s.pkServiceId,
ps.fkPatientId,
ps.fkStatusId,
s.Code AS ServiceCode,
s.Description AS ServiceDescription,
st.Code AS StatusCode,
st.Description as StatusDescription,
ps.TsStart
from
Service s
inner join
Patient p on 1 = 1
left outer join
(select
max(TsStart) AS TsStart,
fkPatientId,
fkServiceId
from
PatientStatus AS ps
group by
fkServiceId, fkPatientId
) AS psLast on
psLast.fkServiceId = s.pkServiceId and
psLast.fkPatientId = p.pkPatientId
left outer join
PatientStatus AS ps ON
psLast.TsStart = ps.TsStart and
psLast.fkPatientId = ps.fkPatientId and
psLast.fkServiceId = ps.fkServiceId
left outer join
Status st on
st.pkStatusId = ps.fkStatusId
你可能会得到更多的帮助,如果你提供的样本数据集,然后你想要什么你的数据看起来像一个例子。我发现在这里让我们的一些SQL专家能够快速解决问题是非常有效的。 – TheTXI 2009-07-16 03:36:10
谢谢 - 我会为未来记住这一点,尽管我很高兴自己解决了这个问题。我主要是一名开发人员,但是拥有足够的SQL技能来大部分时间合理的使用它:) – 2009-07-16 09:42:25