2016-09-14 112 views
1

到目前爲止,我有一個cte查詢,它返回一個結果,我想遍歷結果集並根據類型列選擇2個記錄... 我可以爲類型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行。我用的CTE與 主查詢和

回答

2

你不說你會如何選擇你想要的兩行,所以我任意選擇通過科目訂購。然後使用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

謝謝喬,我只是試過了,它的工作就像我想要的。我必須編輯代碼以刪除第二個「WITH」,因爲這是多個CTE。再次感謝 – skinnyWill