在为组重置时计算两行之间的时间差 - 热门,谢谢社区

问题描述 投票:0回答:1

就我而言,我有不同的合作伙伴 (ENCOUNTER_ID)。每一项都可以有一项或多项评估。 我需要计算他们每次评估之间的时间差。为每个合作伙伴重置时间。时差字段是我想创建的字段。

在下面的例子中,Joe 有两个评估,第一个评估标记为 w 0,因为它是实例中的第一个评估,第二个评估距离第一个评估有 81 分钟。

Mike 只有一次评估,因此不需要计算。

Olivia 有 5 次评估,第一个因为是第一次所以标记为 0,然后每次评估都与之前的评估有时间差。

我将示例数据附加到 ??领域是我需要帮助的领域。我还附上了我当前使用的 qry。我将其用作相交的一部分,因此我也附加了代码。

非常感谢大家,我知道这对你们中的许多人来说可能是小菜一碟。

我尝试使用带有行号和 Over 分区的 CTE,我尝试使用滞后窗口函数,但无法获得正确的结果。

这就是我所拥有的,它正在工作,但没有为我提供时差字段的正确结果。

Select distinct
   e.ENCOUNTER_ID as ENCNTR_ID
  ,d.FORM_DT_TM Assessment_DtTm
  ,count(DISTINCT e.ENCOUNTER_ID) as Assessment_Count
  ,case when e.ENCOUNTER_ID Is NOT NULL then datediff(second,d.FORM_DT_TM,lag(d.FORM_DT_TM) over(order     
    by d.FORM_DT_TM)) else null end

from KDHCD_P607.PERSON P
 join KDHCD_EDW_MILL_CDS.MD_F_ENCOUNTER E on P.person_id=E.person_id --and e.active_ind=1
 join KDHCD_P607.DCP_FormS_Activity D on P.person_id=D.person_ID and e.ENCOUNTER_ID=d.encntr_id and    
                                                          d.DCP_FORMS_REF_ID  IN  ( 2384507453  )
 join KDHCD_P607.DCP_FORMS_ACTIVITY_COMP DC on D.DCP_FORMS_ACTIVITY_ID=DC.DCP_FORMS_ACTIVITY_ID and 
                                           D.active_ind=1 AND DC.PARENT_ENTITY_NAME = 'CLINICAL_EVENT'
 join kdhcd_p607.clinical_event cs on cs.PARENT_EVENT_ID=dc.PARENT_ENTITY_ID and  Cs.VIEW_LEVEL=0 
 join  kdhcd_p607.clinical_event cd on cs.EVENT_ID=Cd.PARENT_EVENT_ID and Cd.VIEW_LEVEL=1 and 
                              cd.event_Cd in (703614)  --Field that differs from both queries

where p.ACTIVE_IND=1 
  and e.REGISTRATION_DT_TM > '11/1/2023'
group by 
  e.ENCOUNTER_ID 
 ,d.FORM_DT_TM
sql row between intersect time-difference
1个回答
0
投票

我想通了。不管怎样谢谢大家。

**,case when e.ENCOUNTER_ID is not null 
        then (datediff(MINUTE,d.FORM_DT_TM,lag(d.FORM_DT_TM) over(Partition by 
 e.ENCOUNTER_ID order by d.FORM_DT_TM)))* -1 
        else -1 end**
© www.soinside.com 2019 - 2024. All rights reserved.