SQL订单依据2列 - 卖家分组

时间:2014-06-18 05:41:43

标签: sql sql-server sql-server-2008

我想在sql中按价格对卖家进行分组,假设我在下面有表格数据。我想首先按价格订购,但是当卖家在桌子中存在多个时间时,应该在下面。(意思是同一个卖家)。

表数据

 SellerID   SellerName  Price
 88         FlipKart    3950
 32         eBay        4139
 153        Amazon      4139
 96         Walmart     4388
 88         FlipKart    5999
 153        Amazon      4464

要求:

 SellerID   SellerName  Price
 88         FlipKart    3950
 88         FlipKart    5999
 32         eBay        4139
 153        Amazon      4139
 153        Amazon      4464
 96         Walmart     4388

以下代码未给出预期结果。

SELECT SellerID, SellerName, Price 
FROM TableName 
ORDER BY Price, SellerID

2 个答案:

答案 0 :(得分:4)

您可以使用窗口函数MIN(..) OVER..获取每个SellerName的最低价格并按其排序。

SELECT  SellerID,
        SellerName,
        Price
FROM    TableName
ORDER   BY MIN(Price) OVER (PARTITION BY SellerID),
        SellerID

答案 1 :(得分:0)

试试这个:

;with cte as
(select *, min(price) over (partition by sellerid order by sellerid) mp
 from tablename),

select sellerid, sellername, price
from cte
order by mp, sellerid

演示here