の各行の最新PatientData.DateVal
およびPatientData.DecVal
前を取得しようとしています。たとえば、すべての患者の各治療の前に、特定の種類の患者データの最新の日付と値が必要です。PatientTreatment.Startdate
PatientTreatment
以下のスクリプトを使用しました。それは正常に動作します。しかし、このスクリプトは、患者を 1 回だけリストするリストを提供するため、私には適していません。治療ごとに最新の値を取得したい。
SELECT
PatientTreatment.PatientId
,PatientTreatment.StartDate
,PatientData.FK_PatientId
,PatientData.DateVal
,PatientData.DecVal
FROM
PatientTreatment
,PatientData
WHERE
PatientTreatment.PatientId = PatientData.FK_PatientId
AND PatientData.FK_ParamSettingId = 68
AND PatientData.DateVal =
(
SELECT
MAX(DateVal)
FROM
PatientData
WHERE
PatientData.FK_PatientId = PatientTreatment.PatientId
AND DateVal < PatientTreatment.StartDate
)
私のテーブルPatientData
には次の列があります(簡略化):
---------------------------------------------------------------
| Id | FK_PatientID | FK_ParamsettingId | DateVal | DecVal |
---------------------------------------------------------------
| 1 | 247 | 69 | 2010-09-11 | 1 |
| 2 | 514 | 68 | 2011-11-21 | 0 |
| 3 | 20291 | 69 | 2012-11-21 | 2.4 |
| 4 | 20291 | 69 | 2013-12-21 | 3 |
| 5 | 20291 | 69 | 2011-03-03 | 0 |
| 6 | 20221 | 68 | 2012-03-04 | 3 |
| 7 | 20291 | 68 | 2011-06-06 | 2 |
| 10 | 234 | 69 | 2011-03-07 | 4 |
| 11 | 444 | 69 | 2012-04-05 | 1.1 |
| 12 | 212 | 69 | 2012-12-04 | 4.2 |
| 13 | 21342 | 69 | 2011-11-03 | 5.5 |
| 14 | 223 | 69 | 2013-11-01 | 3.3 |
---------------------------------------------------------------
そして、私のテーブルPatientTreatment
には次の列があります(簡略化):
--------------------------
| PatientID | StartDate |
--------------------------
| 247 | 2010-09-11 |
| 514 | 2011-11-21 |
| 20291 | 2012-11-21 |
| 201 | 2013-12-21 |
| 2291 | 2011-03-03 |
| 221 | 2012-03-04 |
| 20291 | 2011-06-06 |
| 234 | 2011-03-07 |
| 80998 | 2012-04-05 |
| 212 | 2012-12-04 |
| 21342 | 2011-11-03 |
| 223 | 2013-11-01 |
--------------------------
皆さんが私を助けてくれることを願っています。
敬具ドガバイト
編集:次の列を含む出力が必要です:PatientId、Startdate、LastDateValBeforeStartdate、LastDecValBeforeStartdate