我擁有表格患者,服務,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