Tôi có truy vấn này:
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;
Nó tạo ra tập kết quả này:
CourseEventKey Titles
-------------- ----------------------------------
29 Test Facility 1
30 Memphis Training Room
32 Drury Inn & Suites Creve Coeur
Dữ liệu là chính xác, nhưng tôi không thể có FOR XML PATH('')
vì nó thoát được một số ký tự đặc biệt.
Để rõ ràng, tôi đang sử dụng FOR XML PATH('')
vì có thể các bản ghi có cùng tiêu đề CourseEventKey
có nhiều Facility
tiêu đề được liên kết với chúng.
Làm cách nào tôi có thể giữ lại dữ liệu được trả về bởi truy vấn này mà không cần sử dụng FOR XML PATH('')
?
Nối chuỗi như thế này sẽ không bao giờ đẹp. Bạn không thể làm điều đó trong ứng dụng của bạn?
—
JNK
Tiếc là không có. Đây sẽ là một phần của quy trình được lưu trữ cho báo cáo và tôi có quyền kiểm soát rất hạn chế đối với những gì báo cáo đó thực hiện. Nó hoạt động tốt nhưng vấn đề DUY NHẤT là thoát khỏi các ký tự đặc biệt. @JNK
—
Kehlan Krumme