患者、サービス、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
:だけにPS2に参加して最後の行を変更します。私は、ここで私たちのSQLの専門家の一部を迅速に解決してもらうのに非常に効果的であることを発見しました。 – TheTXI
ありがとう - 私はこれを自分で解決したことはかなり幸せですが、将来のことを心に留めておきます。私は主に開発者ですが、ほとんどの時間に合理的なものを叩くのに十分なSQLスキルを持っています:) –