如何区分行数的方法

时间:2017-12-19 13:03:11

标签: sql sql-server sql-server-2016

我有像这张表这样的数据

ItemId  Value   Date
1        2      2017-12-18 17:00:00.000
1        2      2017-12-18 17:02:00.000
1        2      2017-12-18 17:04:00.000
1        3      2017-12-18 17:06:00.000
1        3      2017-12-18 17:08:00.000
1        2      2017-12-18 17:10:00.000
1        2      2017-12-18 17:12:00.000
1        2      2017-12-18 17:16:00.000
1        4      2017-12-18 17:14:00.000

我想在sql server

中输出这样的内容
ItemId     Value   MaxDate
1          2       2017-12-18 17:04:00.000
1          3       2017-12-18 17:08:00.000
1          2       2017-12-18 17:16:00.000
1          4       2017-12-18 17:14:00.000
谢谢你的导师。

1 个答案:

答案 0 :(得分:2)

你似乎想要在value更改之前的最后一行,虽然我不确定“4”的值来自哪里(我最好的猜测是最后一个输入行应该有一个“4”和一个不同的时间戳)。

如果是这样,您只需使用lead()

select t.*
from (select t.*,
             lead(value) over (partition by itemId order by date) as next_value
      from t
     ) t
where next_value is null or next_value <> value;