私は次のCTEを持っています:
;WITH combo (id, [program_name]) AS
(
SELECT
1
, CAST('' AS VARCHAR(MAX))
UNION ALL
SELECT
cte.id + 1
,(cte.[program_name] + pl.[program_name] + '; ')
FROM (
SELECT
RowNum = ROW_NUMBER() OVER (ORDER BY people_id)
--people_id
,p.[program_name]
FROM event_log_Rv E
JOIN PROgrams_view p on p.program_info_id = e.program_providing_service
where people_id = 'DFA3AFE5-F681-4B1B-89F0-31D04FA6BF7D'
) pl
JOIN combo cte ON pl.RowNum = cte.id
)
SELECT TOP 1 id, [program_name] FROM combo ORDER BY id DESC
この CTE を実行すると、次のエラーが発生します。
メッセージ 530、レベル 16、状態 1、行 1
ステートメントは終了しました。ステートメントが完了する前に、最大再帰回数 100 を使い果たしました。
people_id
とはデータ型です program_providing_service
。uniqueidentifier
行番号をリストする列をこの CTE に追加するにはどうすればよいですか? 私が最終的にやりたいことは、この CTE にすべてのプログラム/クライアントを表示させることです。
行番号を追加して CTE に参加し、この CTE で組み合わせることでこれを機能させようとしましたが、すべてのプログラム/クライアントを 1 行だけで表示する別の方法を考えることができれば、これを受け入れることができます。
たとえば、私は欲しい:
people_id Programs
DFA3AFE5-F681-4B1B-89F0-31D04FA6BF7D IHS; MCP; DCS