1
 PortPair   caspid  por POD teu ton
  P1-P2        5    P1  P2  9   5000
 P3-P4         5    P3  P4  10  5500
 P1-P2         4    P1  P2  7   4000
 P1-P2         3    P1  P2  5   3000
 P3-P4         3    P3  P4  6   3500
 P3-P4         2    P3  P4  7   4500
 P1-P2         1    P1  P2  3   2500

在这里我有一张桌子,我只想得到每个 PortPair 前 2 条记录的输出。输出如下

 Por    pod PortPair caspID  teu     ton
  P1    P2  P1-P2     5        9    5000
  P1    P2  P1-P2     4        7    4000
  P3    P4  P3-P4     5       10    5500
  P3    P4  P3-P4     3        6    3500

不知道如何查询我的输出表..

有人可以帮忙吗

4

1 回答 1

1

尝试这个

;WITH cte AS
(
   SELECT 
       ROW_NUMBER() OVER(PARTITION BY PortPair ORDER BY CASPID DESC ) AS rno,
       Por  ,  
       pod, 
       PortPair, 
       caspID , 
       teu   ,  
       ton
   FROM tableName
}

SELECT Por  ,  pod, PortPair, caspID , teu   ,  ton
FROM cte 
WHERE rno<=2

在这里,我们partitioning根据您的pairordering基于适当的列按降序排列。这样我们就可以选择前 2 对。

于 2013-07-22T10:13:43.153 回答