2016-09-14 21 views
1

これまでのところ、結果セットを反復してグループごとに2つのレコードを選択する結果を返すcteクエリがあります。 ... タイプ20の2行を返し、タイプ21の2行を返し、タイプ22のレコードの2行を返します。ここでいくつかの関数を試しましたが、2つではなく2つのレコードが返されます上記のレコードが記載されています。ありがとう結果セットを反復処理し、結果セット内のグループごとにN行を返す方法

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行を返そうとしています。私はあなたがあなたが望むどの二列を選ぶだろうか言っていないので、私は、任意のAcctで注文することにしました メインクエリと

答えて

2

とCTEを使用しました。次に、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; 
+0

ありがとうジョー、私はこれを試したところ、私はそれが欲しかったように働いた。これは複数のCTEだったので、2番目の「WITH」を削除するコードを編集する必要がありました。再度ありがとう – skinnyWill

関連する問題