根据列选择有限数量的结果

时间:2012-05-07 15:44:01

标签: sql oracle filter unique distinct

我已尝试查看此问题sql - distinct + select,似乎无法根据我的情况正确定制。我也不在sql开发团队,所以我不知道数据库中的所有内容和内容。我在测试数据库中在黑暗中拍摄。以下是我当前查询的伪示例:

select a.name, b.col1, 
from name a, amount b
where a.identifier=b.acctid
and b.col1 != 'test'

查询当前返回的内容示例:

a.name | b.col1
Jeff     1
Jeff     333
Jeff     77
Jeff     1
Jeff     14
Bob      22
Bob      4
Bob      5
Bob      6

我希望查询结果返回基于ColA唯一的n(我选择的数字)结果。例如,如果n是2:

a.name | b.col1
Jeff     1
Jeff     333
Bob      22
Bob      4

2 个答案:

答案 0 :(得分:3)

对于SQL Server 2005+,您可以使用分析函数:

DECLARE @n INT
SET @n = 2

;WITH CTE AS 
(   SELECT a.name, b.col1, b.col2, ROW_NUMBER() OVER(PARTITION BY ColA ORDER BY a.identifier) Corr
    FROM name a
    INNER JOIN amount b
    ON a.identifier = b.acctid
    WHERE b.col2 != 'test'
)
SELECT *
FROM CTE
WHERE Corr <= @n

我还将您的查询更改为使用显式连接。

答案 1 :(得分:1)

第1步:

使用该信息和另一列创建一个临时表,每个ColA类型都有一个自动增量值。

第2步:

选择新列&lt;的所有信息n值