繰り返し実行される場合、共通テーブル式は再帰的であり、各実行によって、完全な結果セットが取得されるまで追加のローが返されます。キーワードを挿入することによって、共通テーブル式を再帰的にすることができます。句には、再帰的と非再帰的両方の複数の再帰式を含めることができます。再帰を使用すると、ツリーまたはツリーに似たデータ構造を表すテーブルをトラバースすることが簡単になります。回ずつテーブルをそれ自体にジョインすることです。他の再帰共通テーブル式への参照を、再帰共通テーブル式の定義内に含めることはできません。再帰共通テーブル式を相互に再帰的にすることはできないためです。非再帰共通テーブル式には、再帰テーブル式への参照を含めることができます。再帰共通テーブル式には、非再帰共通テーブル式への参照を含めることができます。入力側に含めることはできません。句を含めることはできません。再帰サブクエリでは集合関数は使用できません。オプションの現在の設定を超えるとエラーが生成されます。人に報告を行うすべての従業員を返すクエリを記述できます。クエリの記述方法によって、再帰レベル数を制限できます。レベル数を制限して、トップレベルの管理者のみを返すことができますが、指揮系統が予期したよりも長い場合、除外される従業員も出てきます。レベル数を制限しない場合は、従業員が除外されることはありません。ある従業員が直接または間接的に自分自身に対してレポートするなど、実行に循環が必要な場合は、無限の再帰が発生する可能性があります。この状況は、会社の従業員が取締役会の一員である場合などに、社内の管理階層内で発生することがあります。次のクエリは、管理レベルで従業員をリストする方法を示しています。管理者を持たない従業員を表します。1の管理職に直接報告を行う従業員を表します。以下、同様に続きます。停止条件と呼ばれ、重要な予防措置です。これにより、テーブルデータに循環が含まれている場合に、無限再帰を回避できます。オプションは、暴走する再帰クエリをキャッチするために使用することもできます。この反復数を超えた再帰クエリは終了しますが、エラーが発生します。このオプションがあれば停止条件は重要でないように見えるかもしれませんが、通常はそうではありません。各反復の間に選択されるローの数は急激に増える可能性があり、最大に達する前にパフォーマンスに深刻な影響を与えることがあります。再帰クエリ内に停止条件を設けるのは、各状況に適した制限を設定する手段です。各反復の間に結果セットにローを追加する「再帰サブクエリ」が含まれます。演算子を使用してのみ接続できます。初期サブクエリは、通常の非再帰クエリで、最初に処理されます。再帰部分には、直前の繰り返しで追加されたローへの参照が含まれます。再帰は、繰り返しによって新しいローが生成されなくなったときに自動的に停止します。直前の繰り返しより前に選択されたローを参照する方法はありません。リストと数およびデータ型が一致する必要があります。データ型の自動変換が行えない場合は、一方のサブクエリの結果を明示的にキャストして、もう一方のサブクエリのデータ型に一致させます。