私はページングを適用したり、CTEのレコードを制限したいが方法で、それは一般的に、このSQL - 再帰CTEでのページングではなく、従来の方法で
;WITH children AS
(
SELECT Item, Parent
FROM #TempHeirarchy
UNION ALL
SELECT e.Item, e.Parent
FROM #TempHeirarchy e
INNER JOIN children e2
ON e.Parent = e2.Item
)
select * into #TempFinal
from (select row_number() over(order by parent asc) as RowNumber, * from children) t
where t.RowNumber between 1 and 10
のように示唆された。しかし、この方法では、最初に適用されませんすべてのレコードを再帰してページングを適用するので、10レコードしか取得していないのに、これを行うには多くの時間がかかります。
CTEで解析されたレコードの数が10レコードに達したときに、再帰を完全に停止できる方法はありませんか?
これが可能でない場合は、親子データを生成してページサイズに達すると停止する方法はありますか?
最初の選択では、どこにフィルタ条件が表示されません。 –
私には条件がありません。最初のクエリ自体でレコードを制限すると、実際のレベルは取得されません –
どのように各グループの最上位の親を識別しますか?定義による階層には出発点があります。 – xQbert