【发布时间】:2019-07-09 01:28:13
【问题描述】:
我有Users 和Weeks 的组合。用户获得在给定一周内发生的分数。如果它是null,我需要帮助重复给定周的最后可用分数。
我已经尝试了很多解决方案,包括LAST_VALUE
SELECT UserId, StartOfWeekDate, Score ,LAST_VALUE(Score)
OVER (PARTITION BY UserId ORDER BY StartOfWeekDate ASC) AS LastValue
FROM [ScoresByUserOverWeek]
目前是这样的:
UserId StartOfWeekDate overall LastValue
12534 12/17/2018 NULL NULL
12534 12/24/2018 NULL NULL
12534 12/31/2018 320 320
12534 1/7/2019 NULL NULL
12534 1/14/2019 NULL NULL
12534 1/21/2019 NULL NULL
12534 1/28/2019 345 345
12534 2/4/2019 NULL NULL
12534 2/11/2019 NULL NULL
预期:
UserId StartOfWeekDate overall LastValue
12534 12/17/2018 NULL NULL
12534 12/24/2018 NULL NULL
12534 12/31/2018 320 320
12534 1/7/2019 NULL 320
12534 1/14/2019 NULL 320
12534 1/21/2019 NULL 320
12534 1/28/2019 345 345
12534 2/4/2019 NULL 345
12534 2/11/2019 NULL 345
【问题讨论】:
-
将记录插入临时表或表变量,然后在 WHILE 中更新 LastValue 在这种情况下将优于任何 SQL
标签: sql sql-server tsql window-functions