MSSQL 2008 R2 を使用しています。別の列に格納されている日付までの最新のデータ日付を取得しようとしています。サブクエリで max(ProcedureDate) を使用して、全体的に最新のデータ日付を取得できます。ただし、列に格納されている日付より前の最新の日付が必要です。
次に例を示します。
Current Table: Procedures
ID Patient ProcedureType ProcedureDate
1 George ExamA 1/1/2013
2 George TreatmentA 1/3/2013
2 George TreatmentB 1/5/2003
4 George ExamB 2/1/2013
5 George TreatmentA 2/5/2013
Desired Table: ProceduresWithLastExam
ID Patient ProcedureType ProcedureDate LastExamDate DaysSinceLastExam LastExamType
1 George ExamA 1/1/2013 1/1/2013 0 ExamA
2 George TreatmentA 1/3/2013 1/1/2013 2 ExamA
3 George TreatmentB 1/5/2013 1/1/2013 4 ExamA
4 George ExamB 2/1/2013 2/1/2013 0 ExamB
5 George TreatmentA 2/5/2013 2/1/2013 4 ExamB
以下を使用しようとしましたが、その患者の最新のデータ日付のみを引き戻します。
select p.*, a.LastExamDate, a.ProcedureType as LastExamType from Procedures p
left join (
select exams.Patient, exams.ProcedureType, MAX(exams.ProcedureDate) as LastExamDate from Procedures exams
where ProcedureType like 'Exam%'
group by exams.Patient, exams.ProcedureType
)a
on p.Patient = a.Patient
すべての行の結果は、LastExamDate として 2/1/13、LastExamType として ExamB です。
左の結合、where 句、およびサブクエリにいくつかの追加の日付パラメーターを含めようとしましたが、成功しませんでした。
正しい日付が返されるまで、datediff ロジックを省略していることに注意してください。
助けてくれてありがとう。