Ваши левые объединения избыточны, в результате чего ваш запрос возвращает неожиданные результаты.
Попробуйте вместо этого:
Сначала создайте и заполните таблицы примеров ( Пожалуйста, спасите насэтот шаг в ваших будущих вопросах):
CREATE TABLE Courses
(
CourseID int,
DisplayName varchar(10),
CourseGUID uniqueidentifier DEFAULT(NEWID())
)
CREATE TABLE CourseSchedules
(
dayid int,
CourseGUID uniqueidentifier
)
INSERT INTO Courses(CourseID, DisplayName)
VALUES (5815, 'Test')
INSERT INTO CourseSchedules
SELECT 1, CourseGUID FROM Courses UNION
SELECT 3, CourseGUID FROM Courses UNION
SELECT 5, CourseGUID FROM Courses
Запрос:
SELECT DISTINCT
dbo.Courses.DisplayName AS CourseInternalName,
dbo.courses.CourseID,
STUFF((SELECT ','+ CASE WHEN dayid = 1 THEN 'Mon'
WHEN dayid = 2 THEN 'Tue'
WHEN dayid = 3 THEN 'Wed'
WHEN dayid = 4 THEN 'Thur'
WHEN dayid = 5 THEN 'Fri'
WHEN dayid = 6 THEN 'Sat'
WHEN dayid = 7 THEN 'Sun'
END
FROM dbo.CourseSchedules
WHERE dbo.CourseSchedules.CourseGUID = dbo.Courses.CourseGUID
ORDER BY dayid
FOR XML PATH('')),1,1,'') AS Days
FROM dbo.Courses
WHERE courses.CourseID = 5815
Результаты:
CourseInternalName CourseID Days
Test 5815 Mon,Wed,Fri