-3

*

私は以下のような結果を得ています

PIDここで繰り返されます。2 つの行は 1 人の患者 (ジョン) を表示しています。

私は患者の名前 (ジョン) に対して 1 行だけを表示する必要があります。患者のジョンが同じ日付または他の日付に複数回来院している場合、患者のジョンに対して 1 行を表示する必要があります。

4

6 に答える 6

7

患者ごとに 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
于 2012-05-05T08:49:53.253 に答える
1

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;
于 2012-05-05T09:57:20.350 に答える
1

@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 回の来院がある患者に関する情報を選択します。

于 2012-05-05T07:38:30.660 に答える
0

私はあなたが必要なものを理解していません。多分

GROUP BY PID, Patient_ID, Patient_Name, Sex,
         Patients_Birth_Date,MAX(Visit_Trans_ID),MAX(Visit_Date)
于 2012-05-05T07:30:37.347 に答える