如何区分行数的方法

问题描述 投票:0回答:1

我有像这张桌子的数据

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

谢谢你的回答。

sql sql-server sql-server-2016
1个回答
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;
© www.soinside.com 2019 - 2024. All rights reserved.