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

助けてくれてありがとう。

4

1 に答える 1

3

groupそれぞれに2つの行が常に必要stateであり、最低の組み合わせが必要であると仮定します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は予約語であるため、列の名前は実際には別の名前になっていると思います...正しい列名を使用するには、クエリを調整する必要があります。

于 2012-06-19T19:44:48.770 に答える