滞后函数带回第一行的随机数

abs*_*123 1 sql sql-server lag

LAG (RegisterReading,1) OVER (PARTITION BY Mpancore ORDER BY meterserialnumber, MeterRegisterId) as LagFunc
Run Code Online (Sandbox Code Playgroud)

有人请帮忙.谢谢

大家好,我已经更新了报告,所有添加到报表的钥匙,我已经用它对抗met_reg_readmpan作为一个组合分区,但它似乎没有得到像前一个特定的一些557lag funclag test.

lagtest看起来像这样

LAG (d.RegisterReading,1,0) over (partition by Mpan, met_reg_read order by d.met_reg_read )
Run Code Online (Sandbox Code Playgroud)

lagfunc 没有默认值0

链接到新输出

Gor*_*off 6

这不是随机值.它是一个出现在具有相同Mpancore值的某个值的值.在这种情况下,它是最后一个值.

您遇到的问题是该order by子句有两个键,这些键具有重复值.因此,具有相同值的键的排序是任意的不确定的(但不是随机的,这具有其他含义).

我不确定你想做什么,但我强烈建议使用一组独特的键(因此排序稳定).我认为你可以通过包括RegisterReading:

LAG(RegisterReading, 1) OVER (PARTITION BY Mpancore
                              ORDER BY meterserialnumber, MeterRegisterId, ReadingDateAndTime
                             ) as LagFunc
Run Code Online (Sandbox Code Playgroud)

这仍然不完美,因为仍然存在NULL重复值.