2017-04-19 81 views
-1

我试图拉起所有患者记录(没有重复)。在我的数据库中,所有患者都有多个访问ID和多个访问日期。从有多个事件的表中获取唯一记录

我已经试过这一个:

SELECT DISTINCT * 
FROM PatientVisit 
WHERE Visit IN (SELECT MIN(Visit) FROM PatientVisit GROUP BY PatientProfileId) 
+3

你有问题要问?样本数据,期望的结果和适当的数据库标签都很有帮助。 –

+0

如果您只需要不同的患者数据,只需从您选择的不同语句中删除这些列。即“从患者身上选择不同的姓名,姓氏,姓氏”。例子是必要的。 – Aron

回答

0

试试这个。

SELECT 
    DISTINCT VisitMain.PatientID 
    ,MaxVisit.FirstVisit 
    ,MinVisit.LastVisit 
FROM 
    PatientVisit VisitMain (NOLOCK) 
LEFT JOIN 
    (SELECT 
     PatientID,FirstVisit = MAX(CONVERT(DATETIME,Visit)) 
    FROM 
     PatientVisit (NOLOCK) 
    GROUP BY 
     PatientID) MaxVisit 
ON VisitMain.PatientID = MaxVisit.PatientID 
LEFT JOIN 
    (SELECT 
     PatientID,LastVisit = MIN(CONVERT(DATETIME,Visit)) 
    FROM 
     PatientVisit (NOLOCK) 
    GROUP BY 
     PatientID) MinVisit 
ON VisitMain.PatientID = MinVisit.PatientID