如何在下面的查询中返回MainEmail的值,用逗号分隔并仍然计算MDCselect?
declare @MainHospital varchar(50)='hospital 1'
select distinct mainhospital , f.Item, count(*) Count
from SurveyPicList s
cross apply splitstrings(s.MDCselect,':') as f
WHERE MainHospital = @MainHospital
GROUP BY MainHospital, f.Item
ORDER BY Count DESC
要明确上述内容,请返回:http://i.imgur.com/F1oPU6P.jpg
因此有3个单独的参赛作品/人选择" 02-Eye"。我想列出他们的电子邮件(MainEmail)逗号分隔。如果我不清楚,请告诉我。
答案 0 :(得分:1)
假设您使用CROSS APPLY
表示您使用的是SQL Server,并且它至少是2005版本,您可以使用XML进行串联,如下所示:
declare @MainHospital varchar(50)='hospital 1';
select mainhospital , f.Item, count(*) Count
,Stuff(
(select distinct ', ' + m.MainEmail
from SurveyPicList m
where m.MainHospital = @MainHospital
and ':' + m.MDCselect + ':' like '%:' + f.Item + ':%'
FOR XML PATH ('')),
1, 2, '') as Emails
from SurveyPicList s
cross apply splitstrings(s.MDCselect,':') as f
WHERE MainHospital = @MainHospital
GROUP BY MainHospital, f.Item
ORDER BY Count DESC
从名称我假设splitstrings
将其第一个参数拆分为由第二个参数分隔的项目。因此,我使用like
在子选择的f.Item
条件中检查m.MDCselect
中的WHERE
。实际上,这个WHERE
条件正在做的是收集同一个表的另一个实例中与最终分组输出中的一个记录匹配的所有行。