我的SQL技能非常低,所以请注意我的问题的基本级别......
我有一个简单的数据库,其中有2个不同的列:CONTACTS和EMAILS
它看起来像这样:
CONTACT | E-MAIL COLUMN
contact01 | EMAIL #1 - contact01
contact13 | EMAIL #3 - contact13
contact285 | EMAIL #67 - contact285
contact999 | EMAIL #87 - contact01
如何创建显示以下内容的2列(一个在另一列旁边):
NEWCONTACT | COMBO E-MAIL
contact01 | EMAIL#1 / EMAIL#87
contact13 | E-MAIL#3
contact285 | E-MAIL#67
注意:第二列上的“/”符号可以是您想要的任何内容。 我只需要一个分隔符(即“+”,“,”,“;”等等)
答案 0 :(得分:0)
整个事情中最困难的部分是您按照电子邮件列的一部分进行分组。什么似乎是“真正的”接触。如果不是这种情况(如果你有另一个带有contact_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