のは、次のようにあなたのテーブルが何かに見えると仮定しましょう:その場合は
doctor_patients:
doctor_id int,
patient_id int,
visit_date datetime
次のようなクエリを記述することができます
select a.patient_id, b.doctor_id as doctor_1, b.visit_time_max as doctor_1_visit_time, a.doctor_id as doctor_2, max(a.visit_time) as doctor_2_visit_time
from doctor_patients a
inner join
(select patient_id, doctor_id, max(visit_time) as visit_time_max
from doctor_patients
where visit_time < a.visit_time
and patient_id = a.patient_id
and doctor_id = a.doctor_id) b
あなたは常に最後尾にWHERE句を置くことができますフィルタを「a」テーブルに適用します。私はSQL上でそれを試していないので、このクエリがそのまま実行されるかどうかはわかりません。しかし、これがあなたに何をする必要があるかについての一般的な考えを与えることを願っています。最新のSQL機能を使用してこれを達成するより良い方法があるかもしれませんが、これはあなたを圧倒させるでしょう。私はこれがあなたが探していた答えだと願っています!
何ですか?私はあなたが何を求めているのか分かりません。すべてのデータを保管するのに十分な列がないと言っていますか?もしそうなら、列を追加してください。 –
いいえ、私はそれを言っていません。私は医者が患者を見た第1回と第2回をどのように追加するのか分かりません。 Doctor_1とDoctor_2の列は、患者を見た2つの異なる医師IDで作成されます。どのようにして各医師の日付を取得し、最初に(doctor_1)、2番目(doctor_2)の順番でIDを列挙し、そのすべてを他のすべての患者に対して繰り返すのですか? – user1084523
申し訳ありませんが、わかりません。 –