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

如何实现按ParentID分组取前一条记录值,等效SQL LAG窗口函数功能

Cypher 实现同组内取上一条记录值方案

无需使用OFFSET和MATCH混合查询,直接通过分组排序+列表索引即可实现等效SQL中LAG窗口函数的效果,具体查询语句如下(假设你的数据存储为标签为Record的节点,属性包含ParentID、ChildID、Date、Value):

MATCH (r:Record)
-- 按ParentID分组,组内按日期升序生成有序记录列表
WITH r.ParentID AS parent, collect(r ORDER BY r.Date ASC) AS sortedRecords
-- 遍历列表下标
UNWIND range(0, size(sortedRecords)-1) AS idx
WITH sortedRecords[idx] AS current, 
     -- 下标为0的第一条记录无上一条,返回NULL,否则取前一条的Value
     CASE WHEN idx > 0 THEN sortedRecords[idx-1].Value ELSE NULL END AS PreviousValue
-- 按要求输出字段
RETURN current.ParentID AS ParentID,
       current.ChildID AS ChildID,
       current.Date AS Date,
       current.Value AS Value,
       PreviousValue
ORDER BY ParentID, Date ASC

执行上述语句即可得到你预期的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:15:01