Я предполагаю, что вы хотите, чтобы [ServiceAnimal] имел результат 'NA', если он нулевой.Это простой способ добиться этого.
ISNULL(STUFF((SELECT CASE WHEN COUNT(pp.sPetType) > 0 and pp.sPetIsServiceAnimal = 'Yes' THEN
CASE WHEN COUNT(pp.sPetType) = 1 and pp.sPetIsServiceAnimal = 'Yes' then '; ' + '1 ' + pp.sPetType ELSE
CASE WHEN COUNT(pp.sPetType) = 2 and pp.sPetIsServiceAnimal = 'Yes' then '; ' + '2 ' + pp.sPetType + 's' ELSE
CASE WHEN COUNT(pp.sPetType) = 3 and pp.sPetIsServiceAnimal = 'Yes' then '; ' + '3 ' + pp.sPetType + 's'
END END END ELSE 'None' END
FROM person_pet pp
WHERE t.hMyPerson = pp.hMyPerson
GROUP BY pp.sPetType, pp.sPetIsServiceAnimal
FOR XML Path('')), 1, 1, ''), 'NA') [ServiceAnimal]