删除SQL Server中的最低排名行

时间:2014-10-29 12:46:39

标签: sql sql-server

我有一张如下表格。

Customer    Order        Rank
1             12           3
1             14           7
2             15           6
2             16           4
2             17           2
2             21           1
3             24           5
3             25           6
3             27           7

现在,我想选择除每个客户的排名最小的行之外的所有行。它应该如下所示。

Customer    Order        Rank
1             14           7
2             15           6
2             16           4
2             17           2
3             25           6
3             27           7

2 个答案:

答案 0 :(得分:6)

您可以使用CTE + ROW_NUMBER

WITH CTE AS
(
    SELECT Customer, [Order], Rank,
           RN = ROW_NUMBER() OVER (PARTITION BY Customer ORDER BY Rank)
    FROM dbo.Customers
)
SELECT Customer, [Order], Rank 
FROM CTE 
WHERE RN > 1
ORDER BY Customer, Rank DESC

演示http://sqlfiddle.com/#!6/444be/3/0

答案 1 :(得分:2)

WITH CTE AS (
SELECT Customer,Order,Rank,
ROW_NUMBER() OVER (PARTITION BY Customer ORDER BY Rank ) as rn FROM t
)
SELECT Customer,Order,Rank FROM CTE
WHERE rn >1