返回列的值取决于更改点

时间:2018-09-27 13:36:29

标签: sql-server

我是Microsoft SQL Server的新手,所以也许这很简单,但是我没有经验。

我拥有的数据类似于所示的前三列(A,B,C)。我想使用这些列以黄色突出显示的列(D)返回数据。基本上,我试图显示从当前星期开始的变量的所有值,包括变量的变化点。变量的值应在时间上继续向前,直到变量的值更改(C列)为止。

谢谢。

See image describing the situation

3 个答案:

答案 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