【问题标题】:Returning value of previous grouped record返回上一个分组记录的值
【发布时间】:2021-12-06 00:13:20
【问题描述】:

我的数据集是这样的

ParentID ChildID Date Value
1 NULl 1/12/2021 100
1 1-1 2/12/2021 200
2 NULL 1/12/2021 500
2 2-1 2/12/2021 700
2 2-2 3/12/2021 900

我需要返回按 ParentID 分组的前一个值。我可以很容易地使用 SQL 中的 LAG 窗口函数来实现这一点。我尝试混合使用 OFFSET 和 MATCH,但是遇到了困难。

预期输出

ParentID ChildID Date Value PreviousValue
1 NULL 1/12/2021 100 NULL
1 1-1 2/12/2021 200 100
2 NULL 1/12/2021 500 NULL
2 2-1 2/12/2021 700 500
2 2-2 3/12/2021 900 700

对此的 SQL 翻译将是

LAG(value,1) OVER (PARTITION BY ParentID ORDER BY Date ASC).

谢谢。

【问题讨论】:

  • 以前的记录是什么意思?您期望从给定的数据中得到什么结果?
  • @Harun24HR - 在预期输出中添加了道歉。

标签: sql excel


【解决方案1】:

试试下面的公式-

=IF(COUNTIF($A$2:$A2,A2)=1,"",INDEX(FILTER($D$2:$D$6,$A$2:$A$6=A2),COUNTIF($A$2:$A2,A2)))

【讨论】:

  • 这个公式似乎只返回相同的值。是否可以使用 FILTER 的替代功能?
猜你喜欢
  • 1970-01-01
  • 2010-09-18
  • 2011-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-15
  • 2013-06-11
相关资源
最近更新 更多