选择从两个或多个表记录中浓缩的GROUP BY记录

时间:2014-10-23 04:01:22

标签: sql rdms

我有两个简单的表格:

HospitalEpisode:

|ID|DateAdmit|DateDischarge|

Unit Episode:

|ID|HospitalEpisodeID|DateAdmit|DateDischarge|

一个医院剧集可以有多个单元剧集。

我需要生成所有患有两次或更多单位剧集的患者的报告。这就是我开始的方式

SELECT * from HospitalEpisode
INNER JOIN UnitEpisode
ON HospitalEpisode.ID=UnitEpisode.HospitalEpisodeID
GROUP BY HospitalEpisode.ID

这当然不计算一组内的单位剧集,不会过滤那些UnitEpisodes为两个或更多的剧集,并且不允许我在医院剧集中逐步完成每个单元剧集以提取相关数据。即使我可以获得具有两个或更多UnitEpisodes的HospitalEpisodes列表,我也可以运行第二个查询来提取报告的特定数据。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

使用HAVING条款来获取包含2个或更多单位剧集的所有医院剧集。

SELECT UE.HospitalEpisodeID from HospitalEpisode HE
INNER JOIN UnitEpisode UE
ON HE.ID=UE.HospitalEpisodeID
GROUP BY UE.HospitalEpisodeID
HAVING COUNT(*) >=2

如果您希望单元集详细信息符合上述条件,则需要在子查询

中选择上面运行
SELECT * FROM 
(
    SELECT UE.HospitalEpisodeID from HospitalEpisode HE
    INNER JOIN UnitEpisode UE
    ON HE.ID=UE.HospitalEpisodeID
    GROUP BY UE.HospitalEpisodeID
    HAVING COUNT(*) >=2
)T
JOIN UnitEpisode UE 
on T.HospitalEpisodeID = UE.HospitalEpisodeID

答案 1 :(得分:-2)

试试这个:

SELECT * from HospitalEpisode
LEFT JOIN UnitEpisode
ON HospitalEpisode.ID=UnitEpisode.HospitalEpisodeID
GROUP BY HospitalEpisode.ID