我有这个问题:
SELECT DISTINCT
f1.CourseEventKey,
STUFF
(
(
SELECT '; ' + Title
FROM (
SELECT DISTINCT
ces.CourseEventKey,
f.Title
FROM CourseEventSchedule ces
INNER JOIN Facility f ON f.FacilityKey = ces.FacilityKey
WHERE ces.CourseEventKey IN
(
SELECT CourseEventKey
FROM @CourseEvents
)
) f2
WHERE f2.CourseEventKey = f1.CourseEventKey
FOR XML PATH('')
), 1, 2, ''
)
FROM (
SELECT DISTINCT
ces.CourseEventKey,
f.Title
FROM CourseEventSchedule ces
INNER JOIN Facility f ON f.FacilityKey = ces.FacilityKey
WHERE ces.CourseEventKey IN
(
SELECT CourseEventKey
FROM @CourseEvents
)
) f1
它产生这个结果集:
CourseEventKey Titles
-------------- ----------------------------------
29 Test Facility 1
30 Memphis Training Room
32 Drury Inn & Suites Creve Coeur
数据准确无误,但我无法FOR XML PATH('')
,因为它会逃脱某些特殊字符。
要明确,我使用的是FOR XML PATH('')
,因为具有相同CourseEventKey
的记录可能会有多个Facility
个与之关联的标题。
如何在不使用FOR XML PATH('')
的情况下保留此查询返回的数据?
答案 0 :(得分:1)
将“for xml path(''))”部分更改为“for xml path(''),root('root'),type).query('root')。value('。',' varchar(max)')“这将正确地解开字符。
抱歉格式不佳,但现在不在我的电脑上。如果你需要,我可以稍后给出一个完整的例子。