У меня три таблицы
провайдеры
provider_id provider_name email
1 abc abc@gmail.com
2 xyz xyz@gmail.com
специальность
speciality_id speciality_name
1 Derma
2 Ortho
provider_speciality
Provider_id speciality_id
1 1
1 2
Мне нужен ввод, как показано ниже
Providername Speciality_name email
abc Derma,Ortho abc@gmail.com
ниже мой запрос
select
a.provider_name,
STUFF((SELECT ', ' + ff.speciality_name
FROM speciality ff
WHERE ff.speciality_id = pe.speciality_id
FOR XML PATH('')), 1, 1, '')
speciality_name,
a.email
from providers a
left join providers_speciality pe on a.provider_id = pe.provider_id
and ISNULL(1,pe.speciality_id) = pe.speciality_id
left join speciality f with (nolock) on pe.speciality_id = f.speciality_id
where
upper(a.provider_name) like upper(ISNULL('%abc%',a.provider_name))
group by a.provider_name,a.email,pe.speciality_id
ниже результата
Providername Speciality_name email
abc Derma abc@gmail.com
abc Ortho abc@gmail.com
Это может быть из-за группировки по pe.speciality_id
но если я уберу это из group by
пункта ниже, появится ошибка
provider_speciality.speciality_id 'недопустимо в списке выбора
потому что он не содержится ни в статистической функции, ни в
Предложение GROUP BY.