Как утверждает Джон Каппеллети, вы удаляете начальную запятую (но не начальную пробел), а если есть запятая, то у вас возвращается пустая строка.
Чтобы удалить пробел толькоизмените второе значение 1 рядом с концом на 2, как показано ниже.
select
Names= (STUFF((
SELECT ', ' + CONCAT(
CASE WHEN RegistryUser.FirstName IS NOT NULL AND RegistryUser.LastName IS NOT NULL THEN RegistryUser.FirstName ELSE App.FirstName END,
' ',
CASE WHEN RegistryUser.FirstName IS NOT NULL AND RegistryUser.LastName IS NOT NULL THEN RegistryUser.LastName ELSE App.LastName END
) AS Names
FROM ConsultingEventConsultant
LEFT JOIN App
ON ConsultingEventConsultant.AppID = App.AppID
LEFT JOIN RegistryUser
ON App.UserID = RegistryUser.UserID
WHERE ConsultingEventConsultant.consultingeventid = 56428
and ConsultingEventConsultant.CECID != (SELECT TOP 1 CECID FROM ConsultingEventConsultant CEC WHERE CEC.ConsultingEventID = 56428 ORDER BY CECID)
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'
), 1, 2, ''))
Чтобы узнать больше о пустой строке, выполните следующее.Тогда вы сможете найти ошибочные данные и исправить их или ошибочную логику в запросе (в зависимости от того, что вызывает пустую строку).
SELECT ', ' + CONCAT(
CASE WHEN RegistryUser.FirstName IS NOT NULL AND RegistryUser.LastName IS NOT NULL THEN RegistryUser.FirstName ELSE App.FirstName END,
' ',
CASE WHEN RegistryUser.FirstName IS NOT NULL AND RegistryUser.LastName IS NOT NULL THEN RegistryUser.LastName ELSE App.LastName END
) AS Names,
*
FROM ConsultingEventConsultant
LEFT JOIN App
ON ConsultingEventConsultant.AppID = App.AppID
LEFT JOIN RegistryUser
ON App.UserID = RegistryUser.UserID
WHERE ConsultingEventConsultant.consultingeventid = 56428
and ConsultingEventConsultant.CECID != (SELECT TOP 1 CECID FROM ConsultingEventConsultant CEC WHERE CEC.ConsultingEventID = 56428 ORDER BY CECID)