我有以下 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 时,我收到此错误:
Msg 530, Level 16, State 1, Line 1
语句终止。在语句完成之前,最大递归 100 已用完。
和是people_id
数据类型。 program_providing_service
uniqueidentifier
如何在此 CTE 中添加列以列出行号?我最终想要做的是让这个 CTE 显示所有程序/客户端。
我试图通过在此 CTE 中添加行号来加入 CTE 和组合来使其工作,但如果您能想到一种不同的方式来仅在一行中显示所有程序/客户端,我可以接受这一点。
例如,我想要:
people_id Programs
DFA3AFE5-F681-4B1B-89F0-31D04FA6BF7D IHS; MCP; DCS