前两天同事问了个SQL问题,有个出价记录表【针对不同拍品出价】,每个人都可以多次出价,要查下哪些拍品出价最高的人和出价次高的人是同一个人的记录,当时写了下面的SQL,今天先记下了,欢迎补充新的查询方式:
表结构如下:
主键 拍品 出价人 出价
;WITH cte AS
(SELECT
num=RANK() OVER(PARTITION BY PublishId ORDER BY BidPrice DESC)
,bidlistid
,PublishId
,BidderId
,BidPrice FROM AuctionBidRecordList where BidMode=3 )
select a.PublishId,a.BidderId,a.BidPrice,b.BidPrice from
(SELECT * FROM cte WHERE num=1)a inner join
(SELECT * FROM cte WHERE num=2) b on a.PublishId=b.PublishId and a.BidderId=b.BidderId