私は、患者が診療所を訪問したときに入力された患者のバイタル(特に血圧)を調べる必要があるクエリに取り組んでいます。私は2015年の一年間の結果を引き出しています。もちろん、何回も訪問した特定の患者がいます。最新の訪問時に入力されたバイタルのみを見る必要があります。別のわずかなねじれは、収縮期および拡張期血圧が別々に入力されていることなので、私のような結果に終わる:結果セット内の最新の日付を確認する
Patient ID Name DOB Test Results Date
---------------------------------------------------------------------------------
1000 John Smith 1/1/1955 BP - Diastolic 120 2/10/2015
1000 John Smith 1/1/1955 BP - Systolic 70 2/10/2015
1000 John Smith 1/1/1955 BP - Diastolic 128 7/12/2015
1000 John Smith 1/1/1955 BP - Systolic 75 7/12/2015
1000 John Smith 1/1/1955 BP - Diastolic 130 10/22/2015
1000 John Smith 1/1/1955 BP - Systolic 76 10/22/2015
9999 Jane Doe 5/4/1970 BP - Diastolic 130 4/2/2015
9999 Jane Doe 5/4/1970 BP - Systolic 60 4/2/2015
9999 Jane Doe 5/4/1970 BP - Diastolic 127 11/20/2015
9999 Jane Doe 5/4/1970 BP - Systolic 65 11/20/2015
26,000+結果がありますが、私はすべての単一の患者を通過してたときにその表示したくない明らかになります最近の結果は次のとおりです。私は私の結果は次のようになりたいのですが:
Patient ID Name DOB Test Results Date
---------------------------------------------------------------------------------
1000 John Smith 1/1/1955 BP - Diastolic 130 10/22/2015
1000 John Smith 1/1/1955 BP - Systolic 76 10/22/2015
9999 Jane Doe 5/4/1970 BP - Diastolic 127 11/20/2015
9999 Jane Doe 5/4/1970 BP - Systolic 65 11/20/2015
私は出産やその他もろもろの名前と日付を繰り返しになるだろうけど、私は主に結果列に焦点を当てています。ここで
は私のクエリです:それはのためだけれども他の答えを探しまわって後
SELECT DISTINCT
pd.PatientID as [Patient ID],
pd.PatientName as Name,
pd.DateOfBirth as DOB,
v.Test as Test,
v.Results as Results,
v.TestDate as Date
FROM PatientDemographic pd JOIN Vitals v ON pd.PatientID = v.PatientID
WHERE v.TestDate BETWEEN '01/01/2015' AND '12/31/2015'
AND v.Test LIKE 'BP%'
ORDER BY pd.PatientID, v.TestDate
、私は、私は特にthis linkを参照して(SELECT
文でv.TestDate
列のGROUP BY
とMAX()
集約関数をやってみましたOracleと私はSQL Serverを使用しているので、構文が同じかどうか完全にはわかりません)。私のクエリは、次にように見えた:確かに
SELECT DISTINCT
pd.PatientID as [Patient ID],
pd.PatientName as Name,
pd.DateOfBirth as DOB,
v.Test as Test,
v.Results as Results,
MAX(v.TestDate) as Date
FROM PatientDemographic pd JOIN Vitals v ON pd.PatientID = v.PatientID
WHERE v.TestDate BETWEEN '01/01/2015' AND '12/31/2015'
AND v.Test LIKE 'BP%'
GROUP BY pd.PatientID
、私はいつもGROUP BY
を使用して少し苦労しました。この特定のケースでは、患者名列をGROUP BY
節に追加する必要があることを示すエラーが表示されるため、DOBを要求します。テスト名。基本的には、SELECT
の文をすべてGROUP BY
に追加したいと考えています。
私の直近の患者さんの診察を進めるにはどうすればよいですか?
これはトリックを行ったようです!ありがとう! – EJF