我需要限制查询的结果,但是我无法实现我使用count和rownum看过的任何示例。鉴于此表
rec error
___ _____
1 123
2 123
3 456
4 456
5 456
6 456
7 456
8 456
9 456
10 789
11 789
12 789
13 789
此表包含许多行,其中包含许多不同的错误代码。我正在使用它来获取我需要的记录:
select rec, error from table where error in (123,456,789)
但是我想每次错误只返回不超过2条记录。我不知道该怎么做。如果我只是寻找一个错误,我可以简单地使用count或rownum。使用IN条件时不确定如何操作。
答案 0 :(得分:1)
您是否关心针对任何特定错误代码获得哪两行?像这样的东西会为每个错误代码提供两行,其中rec
值最小。如果更改ORDER BY
分析函数中的ROW_NUMBER
,则可以更改返回的两行。
SELECT rec,
error
FROM (SELECT rec,
error,
row_number() over (partition by error
order by rec asc) rnk
FROM your_table_name)
WHERE error in (123,456,789)
AND rnk <= 2