Sql 如何遍历结果集并在结果集中每个组返回N行

Sql 如何遍历结果集并在结果集中每个组返回N行,sql,sql-server-2008,Sql,Sql Server 2008,到目前为止,我有一个cte查询,它返回一个我想在结果集上迭代的结果,并根据类型列ie为每个组选择2条记录。。。 我可以为类型20返回2行,为类型21返回2行,为类型22返回2行记录。。。我在这里尝试了一些函数,但是每次都会返回2条记录,而不是上面提到的2条记录。谢谢 Acct Cde type AcctNbr 123456 50 20 2345678 123457 50 20 2345678 123458 50 20 2345678 123459 50 20

到目前为止,我有一个cte查询,它返回一个我想在结果集上迭代的结果,并根据类型列ie为每个组选择2条记录。。。 我可以为类型20返回2行,为类型21返回2行,为类型22返回2行记录。。。我在这里尝试了一些函数,但是每次都会返回2条记录,而不是上面提到的2条记录。谢谢

Acct    Cde  type AcctNbr
123456  50  20  2345678 
123457  50  20  2345678 
123458  50  20  2345678 
123459  50  20  2345678
123460  50  21  2345678
123461  50  21  2345678
123462  50  21  2345678
123463  50  21  2345678
123464  50  22  2345678
123465  50  22  2345678
123466  50  22  2345678
123467  50  22  2345678
123468  50  23  2345678
我正在尝试为每个类型列返回至少2行。我用过cte
主查询和

您没有说明如何选择所需的两行,因此我任意选择按帐户排序。然后使用函数按类型对行进行编号

WTIH YourFirstCTE AS (
    -- Appropriate code goes here
),
cteRowNum AS (
    SELECT Acct, Cde, type, AcctNbr,
           ROW_NUMBER() OVER(PARTITION BY type ORDER BY Acct) AS RowNum
        FROM YourFirstCTE
)
SELECT Acct, Cde, type, AcctNbr
    FROM cteRowNum
    WHERE RowNum <= 2;

谢谢乔,我刚刚试过这个,它就像我想要的那样工作。我必须编辑代码以删除第二个,因为这是多个CTE。再次感谢