-3

*

我得到如下结果

PID在这里重复,2 行显示 1 个患者 (john)

我只需要为患者姓名(约翰)显示 1 行,如果他在同一日期或任何其他日期多次访问,我必须为患者约翰显示一行。

4

6 回答 6

7

显示每位患者一行 - 以及他/她的最后一次就诊日期:

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

@nikhil 你能更具体一点吗?

如果您只想为患者留一排,为什么要加入表格?

我认为你应该对 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

此查询选择有关至少有一次就诊的患者的信息。

于 2012-05-05T07:38:30.660 回答
1

使用下面将返回单行的查询..如果行的所有值都相同

SELECT 
    Patient_Master.PID, 
    Patient_Master.Patient_ID,
    Patient_Master.Patient_Name,
    Patient_Master.Sex,
    Patient_Master.Patients_Birth_Date,
    Patient_Visit.Visit_Date 
FROM 
    Patient_Master 
LEFT 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,
    Patient_Visit.Visit_Date   
ORDER BY 
    Patient_Master.Patient_Name
于 2012-05-05T07:39:08.897 回答
1

我认为这会给你单行,试试这个

SELECT 
        Patient_Master.PID, 
        Patient_Master.Patient_ID,
        Patient_Master.Patient_Name,
        Patient_Master.Sex,
        Patient_Master.Patients_Birth_Date,
        Patient_Visit.Visit_Date 
    FROM 
        Patient_Master 
    INNER JOIN
        Patient_Visit ON Patient_Master.PID = Patient_Visit.PID 
    GROUP BY Patient_Master.PID
    ORDER BY 
        Patient_Master.Patient_Name
于 2012-05-05T08:17:45.403 回答
1

每个不同日期显示一名患者:

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;

显示一名患者和最近的日期:

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 回答
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 回答