我是Microsoft SQL Server的新手,所以也许这很简单,但是我没有经验。
我拥有的数据类似于所示的前三列(A,B,C)。我想使用这些列以黄色突出显示的列(D)返回数据。基本上,我试图显示从当前星期开始的变量的所有值,包括变量的变化点。变量的值应在时间上继续向前,直到变量的值更改(C列)为止。
谢谢。
答案 0 :(得分:0)
SELECT T1.*, COALESCE(SQ.NewValue, T1.StartingValue) FROM YourTable T1
OUTER APPLY (SELECT TOP 1 T2.NewValue FROM YourTable T2
WHERE T1.Week <= T2.week AND
T2.NewValue IS NOT NULL
ORDER BY T2.Week DESC) SQ
答案 1 :(得分:0)
一种方法是使D列成为一个相关的子查询,该查询获得C的最近的先前值,而不是NULL。
答案 2 :(得分:0)
不需要两次表扫描的一种方法是使用CTE创建“组号”,然后使用带有OVER
的{{1}}子句:
MAX