Sql 如何遍历结果集并在结果集中每个组返回N行
到目前为止,我有一个cte查询,它返回一个我想在结果集上迭代的结果,并根据类型列ie为每个组选择2条记录。。。 我可以为类型20返回2行,为类型21返回2行,为类型22返回2行记录。。。我在这里尝试了一些函数,但是每次都会返回2条记录,而不是上面提到的2条记录。谢谢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
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。再次感谢