我试图弄清楚我是否无意中使用 row_number 函数过滤掉了患者的接触情况。因为它位于 select 语句中,所以我不确定 SQL 在使用 row_number 函数进行分区/排序之前是否会应用 where 条件。 我想要的是最近的患者血压(舒张压)不为零的情况。我担心的是,该函数仅查看最近的遭遇,如果患者没有测量血压,则会将其从结果集中排除。感谢对此的任何帮助。谢谢你。
select *
from (select p.pat_id, p.PAT_LAST_NAME, p.PAT_FIRST_NAME
, pe.BP_SYSTOLIC, pe.BP_DIASTOLIC,pe.PCP_PROV_ID
, pe.VISIT_PROV_ID as Pat_Enc_Provider_ID
, CONVERT(VARCHAR(11),CAST(pe.contact_date AS DATE), 101) as VitalSignsDate
, ROW_NUMBER() OVER (PARTITION BY pe.pat_id ORDER BY pe.contact_date DESC) rowno
from PAT_ENC pe
join patient p
on pe.pat_id = p.PAT_ID
where (pe.contact_date > CAST(GETDATE()-20 AS DATE)
and pe.contact_date < CAST(GETDATE() AS DATE)
)
and pe.DEPARTMENT_ID like '271%'
and pe.BP_DIASTOLIC is not null
) TEST
where rowno = 1
order by pat_id
首先应用 where 子句和其他谓词,然后计算窗口函数。
如果满足所有条件,您将在最终结果中获得一条记录