You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多重复列场景下如何用LAG函数正确获取上一个encounter_group_id

问题:为每个encounter组获取上一个组ID

原始表结构及数据

encounter_idencounter_group_idactivity
1001000check in
1001000process
1001000check out
1001001check in
1001001check out
1001002check in
1001002transform
1001002process
1001002load
1001002check out
1001003check in
1001003terminate

目标结果

encounter_idencounter_group_idprev_group_idactivity
1001000NULLcheck in
1001000NULLprocess
1001000NULLcheck out
10010011000check in
10010011000check out
10010021001check in
10010021001transform
10010021001process
10010021001load
10010021001check out
10010031002check in
10010031002terminate

当前使用的SQL语句

select  encounter_id, 
        encouter_group_id, 
        LAG(encounter_group_id) OVER (ORDER BY encntr_group_id),
        activity
from encounter_activity

当前错误结果

encounter_idencounter_group_idprev_group_idactivity
1001000NULLcheck in
10010001000process
10010001000check out
10010011000check in
10010011001check out
10010021001check in
10010021002transform
10010021002process
10010021002load
10010021002check out
10010031002check in
10010031003terminate

解决方案

当前SQL的问题是LAG函数仅取上一行的组ID,未按encounter_id分区,且同一个组内的行无法共享正确的上一个组ID。通过嵌套窗口函数可实现需求:先为每个组的首行获取上一个组ID,再将该值填充到整个组的所有行中。

修正后的SQL:

SELECT 
    encounter_id,
    encounter_group_id,
    FIRST_VALUE(prev_group) OVER (PARTITION BY encounter_id, encounter_group_id) AS prev_group_id,
    activity
FROM (
    SELECT 
        encounter_id,
        encounter_group_id,
        -- 按encounter_id分区、组ID排序,获取当前组的上一个组ID
        LAG(encounter_group_id) OVER (PARTITION BY encounter_id ORDER BY encounter_group_id) AS prev_group,
        activity
    FROM encounter_activity
) t
ORDER BY encounter_id, encounter_group_id, activity;

逻辑说明

  1. 子查询中,PARTITION BY encounter_id确保仅在同一个encounter内计算上一个组,ORDER BY encounter_group_id保证组的顺序正确;
  2. 外层查询使用FIRST_VALUE(prev_group) OVER (PARTITION BY encounter_id, encounter_group_id),将当前组首行的上一个组ID填充到该组的所有行中,达成目标结果。

内容的提问来源于stack exchange,提问作者user8015860

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 04:11:09