我有这张桌子的数据
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-20 17:10:00.000 1 2 2017-12-20 17:12: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-20 17:12:00.000
抱歉,我的称谓没有更好的句子
这可以通过使用不同的行号方法来完成。查看内部查询的结果,该查询将具有相同值的连续行分类为一组,这些组可用于获取最终结果。
select itemid,value,max(date) from ( select t.*, row_number() over(partition by itemid order by date) -row_number() over(partition by itemid,value order by date) as grp from tbl t ) t group by itemid,value,grp
编辑:刚得到min或max与戈登的答案会更容易。然而,如果两个min,max并sum且每组需要其他聚合,这个版本会更好。
min
max
sum