【发布时间】: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 - 在预期输出中添加了道歉。