不知道你是不是说的这个意思:
找出买家在不同拍卖中的最后一次出价金额。
如果我理解的是对的话,那么根据买家id和拍卖id进行分区,按时间降序取第一条即可。
简单的示例,数据是根据你截图中伪造的
select b.出价id,b.拍卖id,b.买家id,b.出价金额,b.出价时间 from(
select a.*,ROW_NUMBER() over (partition by a.买家id,a.拍卖id order by a.出价时间 desc) as row from(
select '1' as 出价id, 'a' as 拍卖id , 'id' as 买家id , 100 as 出价金额 , dateadd(MINUTE,2,'2017-5-27') as 出价时间
union
select '2', 'a' , 'id' , 200 , dateadd(MINUTE,5,'2017-5-27')
union
select '3', 'b' , 'id' , 100 , dateadd(MINUTE,3,'2017-5-27')
union
select '4', 'b' , 'id' , 100 , dateadd(MINUTE,6,'2017-5-27')
union
select '5', 'a' , 'id' , 300 , dateadd(MINUTE,10,'2017-5-27')
union
select '6', 'b' , 'id' , 800 , dateadd(MINUTE,11,'2017-5-27')
) a
) b where b.row=1
示例结果:
please express your requirement clearly.
如果要一句完成,出来的SQL很恶心,而且可能在某些情况下是会出现错误的。
如果可以分成多个语句写的话,就很简单了,相信也没有必要我写给你了。
不知道是你的问题不明确还是什么。怎么感觉你直接按照出价时间排序不就可以了吗。
根据拍卖ID分组,利用开窗函数取num = 1的值。
参照四楼,通过窗口函数解决