【发布时间】:2021-12-11 03:37:13
【问题描述】:
假设我有下表:
| ID | T | R |
|---|---|---|
| 1 | 2 | |
| 1 | 3 | Y |
| 1 | 4 | |
| 1 | 5 | |
| 1 | 6 | Y |
| 1 | 7 |
我想根据列 R 的最后一个非空值添加一个等于列 T 的值的列。这意味着以下内容:
| ID | T | R | GOAL |
|---|---|---|---|
| 1 | 2 | ||
| 1 | 3 | Y | |
| 1 | 4 | Y | 3 |
| 1 | 5 | 4 | |
| 1 | 6 | Y | 4 |
| 1 | 7 | 6 |
我确实有很多 ID,所以我需要使用 OVER (PARTITION BY ...) 子句。另外,如果可能的话,我想使用一个语句,比如
SELECT *
, GOAL
FROM TABLE
所以没有任何额外的选择语句。
【问题讨论】:
-
请确保标记正确。 (MS) SQL Server 雪花。我为你删除了 SQL Server 标记。
-
你的输出中的 4 不应该是 3 吗?或者至少需要将输入表中的
R值更正为4? -
没有输出正确,我想要 T 的值对应于列 R 中的最后一个非空值
标签: sql sql-server snowflake-cloud-data-platform partition-by