Sql server 电子邮件表-合并到一个主题行并将其分组
这是一个电子邮件表,我试图压缩行,如下面的所需格式:。有没有一种简单的方法可以将收件人/组折叠到同一主题行中Sql server 电子邮件表-合并到一个主题行并将其分组,sql-server,tsql,Sql Server,Tsql,这是一个电子邮件表,我试图压缩行,如下面的所需格式:。有没有一种简单的方法可以将收件人/组折叠到同一主题行中 更多信息:不需要Group=-1和To=0根据您的示例数据,我们可以使用XML path()获得这些字段 @你发帖子的时候我在睡觉 Given: subject, To, Group ---------------------- subject1, name1, -1 subject2, name1, -1 subject2, name2, -1 subject2, 0, group1
更多信息:不需要
Group=-1
和To=0
根据您的示例数据,我们可以使用XML path()获得这些字段
@你发帖子的时候我在睡觉
Given:
subject, To, Group
----------------------
subject1, name1, -1
subject2, name1, -1
subject2, name2, -1
subject2, 0, group1
Desired format:
Subject, To
-----------------
subject1, name1
subject2, name1, name2, group1
declare @t table(subject varchar(10),too varchar(10),groups varchar(10))
insert into @t (subject,too,groups)values
('subject1', 'name1', '-1'),
('subject2', 'name1', '-1'),
('subject2', 'name2', '-1'),
('subject2', '0', 'group1')
;with CTE AS (
select subject,STUFF((select distinct +','+too from @t
where subject = t.subject
for xml path('')),1,1,'')+
STUFF((select distinct +','+groups from @t
where subject = t.subject
for xml path('')),1,1,'')R from @t t
GROUP BY subject )
select subject,
CASE WHEN CHARINDEX(',',R) > 0
THEN REPLACE(SUBSTRING(R, CHARINDEX(',', R) + 1, 20),'-1','')
ELSE replace(R,'-1','') END [To] from CTE