2012-06-19 34 views
2

在查詢2列之間的組合時查找一些有助於限制結果的幫助。下面是我與工作種類表的一個例子..限制來自2列的組合的記錄

id name group state 
1 Bob A  NY 
2 Jim A  NY 
3 Dan A  NY 
4 Mike A  FL 
5 Tim B  NY 
6 Sam B  FL 
7 Brad B  FL 
8 Glen B  FL 
9 Ben C  FL 

我想顯示「組」和「狀態」的所有組合的所有記錄,但限制爲只顯示最多2條記錄每個組合。結果應該如下所示:

id name group state 
1  Bob A  NY 
2  Jim A  NY 
4  Mike A  FL 
5  Tim B  NY 
6  Sam B  FL 
7  Brad B  FL 
9  Ben C  FL 

感謝您的幫助。

回答

3

假設你總是希望兩行各groupstate結合最低id

SELECT * 
    FROM (SELECT a.*, 
       row_number() over (partition by group, state 
             order by id asc) rnk 
      FROM your_table a) 
WHERE rnk <= 2 

當然,因爲group是一個保留字,我想你的專欄實際上是命名爲別的東西...您需要調整我的查詢以使用正確的列名稱。