1

我试过检查这个问题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
4

2 回答 2

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

我还更改了您的查询以使用显式联接。

于 2012-05-07T16:02:08.447 回答
1

步骤1:

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

第2步:

选择新列 < n 值的所有信息

于 2012-05-07T15:51:57.283 回答