Sql server 将多封电子邮件分组到一个联系人
我的SQL技能相当低,所以请注意我问题的基本层次 我有一个简单的数据库,其中有两个不同的列:联系人和电子邮件 有点像这样:Sql server 将多封电子邮件分组到一个联系人,sql-server,sql,Sql Server,Sql,我的SQL技能相当低,所以请注意我问题的基本层次 我有一个简单的数据库,其中有两个不同的列:联系人和电子邮件 有点像这样: CONTACT | E-MAIL COLUMN contact01 | EMAIL #1 - contact01 contact13 | EMAIL #3 - contact13 contact285 | EMAIL #67 - contact285 contact999 | EMAIL #87 - contact01 如何创建显示以下内容的
CONTACT | E-MAIL COLUMN
contact01 | EMAIL #1 - contact01
contact13 | EMAIL #3 - contact13
contact285 | EMAIL #67 - contact285
contact999 | EMAIL #87 - contact01
如何创建显示以下内容的两列(一列接一列):
NEWCONTACT | COMBO E-MAIL
contact01 | EMAIL#1 / EMAIL#87
contact13 | E-MAIL#3
contact285 | E-MAIL#67
注意:第二列上的“/”符号可以是您想要的任何符号。。
我只需要一个分隔符(即“+”、“、”、“;”等…)整个过程中最困难的部分是您正在按电子邮件列的一部分进行分组。似乎是“真正”的接触。如果情况并非如此(如果您有另一列带有联系人id或类似内容),那么这可以简化很多
WITH GroupingContact AS (
SELECT Contact, SUBSTRING(eMail,1,charindex('-',eMail)-2) AS eMail,
SUBSTRING(eMail,charindex('- ',eMail)+2,len(eMail)-charindex('- ',eMail))
AS GroupingContact
FROM eMails)
SELECT MIN(Contact) AS Contact,
STUFF((SELECT ', ' + GC.eMail
FROM GroupingContact GC
WHERE GroupingContact.GroupingContact = GC.GroupingContact
FOR XML PATH(''),TYPE).value('.','VARCHAR(MAX)')
, 1, 2, '') AS eMailList
FROM GroupingContact
GROUP BY GroupingContact
你是要我下订单吗?在这种情况下,我怎么做?按联系人从EmailColumn ORDER中选择ContactList.name?啊,对不起。。当我指的是“基本级别”时,我实际上指的是“零到无经验”
按子字符串(contacts,8)选择联系人、表中的电子邮件
这是mysql还是其他?为什么要以这种方式存储数据?您是否在“联系人”列中列出contact01,并将其作为电子邮件列的后缀?这对我来说似乎很成问题。