具有分组和有的子查询

时间:2013-01-15 21:11:01

标签: sql-server

嘿伙计们,我对这一点感到有点难过。这是声明。我正在寻找在过去6个月内访问次数超过3次的患者。我虽然这会给我更容易的芒果。

SELECT od_ar_demographics.PATIENT_ARPTYPE, 
       od_ar_demographics.PATIENT_NAME, 
       od_ar_demographics.MR_NUMBER, 
       OD_IP1.IP1ADMIT_DATE, 
       OD_IP1.IP1DISC_DATE, 
       od_ar_demographics.PATIENT_TYPE
FROM            od_ar_demographics INNER JOIN
                         OD_IP1 ON od_ar_demographics.PATIENT_NUMBER = OD_IP1.IP0NUMBER
where         Mr_number in (select MR_number from (SELECT MR_number, 
 COUNT(MR_number) as LLL
FROM  od_ar_demographics INNER JOIN
                         OD_IP1 ON od_ar_demographics.PATIENT_NUMBER = OD_IP1.IP0NUMBER WHERE  IP1admit_date >(getdate()- 180 ) GROUP BY MR_number
HAVING ( COUNT(MR_number) > 3 ))

1 个答案:

答案 0 :(得分:0)

试试这个,您需要子查询的别名

SELECT od_ar_demographics.PATIENT_ARPTYPE, 
       od_ar_demographics.PATIENT_NAME, 
       od_ar_demographics.MR_NUMBER, 
       OD_IP1.IP1ADMIT_DATE, 
       OD_IP1.IP1DISC_DATE, 
       od_ar_demographics.PATIENT_TYPE
FROM  od_ar_demographics 
INNER JOIN OD_IP1 
    ON od_ar_demographics.PATIENT_NUMBER = OD_IP1.IP0NUMBER
WHERE Mr_number IN (SELECT MR_number 
                    FROM (  
                            SELECT MR_number, COUNT(MR_number) as LLL
                            FROM  od_ar_demographics 
                            INNER JOIN OD_IP1 
                            ON od_ar_demographics.PATIENT_NUMBER = OD_IP1.IP0NUMBER 
                            WHERE  IP1admit_date > getdate()- 180
                            GROUP BY MR_number
                            HAVING COUNT(MR_number) > 3 
                          ) A
                    )