首页 新闻 搜索 专区 学院

t-sql分组查询最后时间的出价金额

0
悬赏园豆:5 [已解决问题] 解决于 2017-07-05 15:59

如图,查询是这两个金额以及对应的拍卖id和买家id

等一个,晴天的主页 等一个,晴天 | 初学一级 | 园豆:7
提问于:2017-05-31 14:59
< >
分享
最佳答案
1

不知道你是不是说的这个意思:

找出买家在不同拍卖中的最后一次出价金额。

如果我理解的是对的话,那么根据买家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

示例结果:

收获园豆:5
Catcher8 | 菜鸟二级 |园豆:362 | 2017-05-31 16:11
其他回答(5)
0

please express your requirement clearly.

~扎克伯格 | 园豆:1837 (小虾三级) | 2017-05-31 15:01
0

如果要一句完成,出来的SQL很恶心,而且可能在某些情况下是会出现错误的。

如果可以分成多个语句写的话,就很简单了,相信也没有必要我写给你了。

爱编程的大叔 | 园豆:30638 (高人七级) | 2017-05-31 15:16
0

不知道是你的问题不明确还是什么。怎么感觉你直接按照出价时间排序不就可以了吗。

Emrys5 | 园豆:223 (菜鸟二级) | 2017-05-31 15:32
0

根据拍卖ID分组,利用开窗函数取num = 1的值。

幻天芒 | 园豆:36594 (高人七级) | 2017-05-31 16:13
0

参照四楼,通过窗口函数解决

悦光阴 | 园豆:2239 (老鸟四级) | 2017-06-01 12:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册