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

时间:2016-06-01 11:23:03

标签: sql sql-server lag

LAG (RegisterReading,1) OVER (PARTITION BY Mpancore ORDER BY meterserialnumber, MeterRegisterId) as LagFunc

任何人都请帮忙。 感谢

大家好,我已使用添加到报告中的所有键更新了报告, 我已经将它用作met_reg_readmpan作为组合分区,但它似乎没有获得557和{{1}中lag func之类的某些内容。 }}

lagtest看起来像这样

lag test

LAG (d.RegisterReading,1,0) over (partition by Mpan, met_reg_read order by d.met_reg_read ) 没有默认值0

链接到新输出

1 个答案:

答案 0 :(得分:6)

这不是随机值。它是一个值,显示在具有相同Mpancore值的某处。在这种情况下,它是最后一个值。

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

我不确定你想做什么,但我强烈建议使用一组独特的键(因此排序稳定)。我想你可以通过加入RegisterReading

来做到这一点
LAG(RegisterReading, 1) OVER (PARTITION BY Mpancore
                              ORDER BY meterserialnumber, MeterRegisterId, ReadingDateAndTime
                             ) as LagFunc

这仍然不完美,因为仍有NULL个重复值。