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

假设您总是想要每行的两行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是保留字,我假设您的列实际上被命名为其他名称......您需要调整我的查询以使用正确的列名。

于 2012-06-19T19:44:48.770 回答