*
私は以下のような結果を得ています
PID
ここで繰り返されます。2 つの行は 1 人の患者 (ジョン) を表示しています。
私は患者の名前 (ジョン) に対して 1 行だけを表示する必要があります。患者のジョンが同じ日付または他の日付に複数回来院している場合、患者のジョンに対して 1 行を表示する必要があります。
*
私は以下のような結果を得ています
PID
ここで繰り返されます。2 つの行は 1 人の患者 (ジョン) を表示しています。
私は患者の名前 (ジョン) に対して 1 行だけを表示する必要があります。患者のジョンが同じ日付または他の日付に複数回来院している場合、患者のジョンに対して 1 行を表示する必要があります。
患者ごとに 1 行を表示 - およびその患者の最終来院日:
SELECT
Patient_Master.PID,
Patient_Master.Patient_ID,
Patient_Master.Patient_Name,
Patient_Master.Sex,
Patient_Master.Patients_Birth_Date,
Patient_Last_Visit.Visit_Date
FROM
Patient_Master
LEFT JOIN
( SELECT
PID,
MAX(Visit_Date) AS Visit_Date
FROM
Patient_Visit
GROUP BY
PID
) AS Patient_Last_Visit
ON Patient_Master.PID = Patient_Last_Visit.PID
ORDER BY
Patient_Master.Patient_Name
Show one patient per distinct date:
SELECT M.PID,
M.Patient_ID,
M.Patient_Name,
M.Sex,
M.Patients_Birth_Date,
A.Visit_Date
FROM Patient_Master AS M
OUTER APPLY
(
SELECT DISTINCT V.Visit_Date
FROM Patient_Visit AS V
WHERE V.PID = M.Pid
) AS A;
Show one patient and the most recent date:
SELECT M.PID,
M.Patient_ID,
M.Patient_Name,
M.Sex,
M.Patients_Birth_Date,
A.Visit_Date
FROM Patient_Master AS M
OUTER APPLY
(
SELECT MAX(V.Visit_Date) AS Visit_Date
FROM Patient_Visit AS V
WHERE V.PID = M.Pid
) AS A;
@nikhilもう少し具体的に教えてください。
患者の行を 1 つだけにしたいのに、なぜテーブルを結合するのですか?
私はあなたがPatient_Masterから列をグループ化し、Patient_Visitでいくつかの集計を行うべきだと思います
編集:これはうまくいくはずです
SELECT
Patient_Master.PID,
Patient_Master.Patient_ID,
Patient_Master.Patient_Name,
Patient_Master.Sex,
Patient_Master.Patients_Birth_Date
FROM
Patient_Master
INNER JOIN
Patient_Visit ON Patient_Master.PID = Patient_Visit.PID
GROUP BY
Patient_Master.PID,
Patient_Master.Patient_ID,
Patient_Master.Patient_Name,
Patient_Master.Sex,
Patient_Master.Patients_Birth_Date
ORDER BY
Patient_Master.Patient_Name
このクエリは、少なくとも 1 回の来院がある患者に関する情報を選択します。
私はあなたが必要なものを理解していません。多分
GROUP BY PID, Patient_ID, Patient_Name, Sex,
Patients_Birth_Date,MAX(Visit_Trans_ID),MAX(Visit_Date)