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

时间:2016-09-14 21:25:58

标签: sql sql-server-2008

到目前为止,我有一个cte查询返回一个结果,我想迭代结果集,并根据类型列选择每组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 主查询和

1 个答案:

答案 0 :(得分:2)

你不会说你如何选择你想要的两行,所以我可以通过Acct任意选择订购。然后使用ROW_NUMBER函数按类型对行进行编号。

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;