Sql 从多个相同记录结果查询中区分一个值

Sql 从多个相同记录结果查询中区分一个值,sql,sql-server,email,stored-procedures,Sql,Sql Server,Email,Stored Procedures,我在sql server中的存储过程中得到了多个左联接的结果: 我需要在每封电子邮件中发送专栏文章的内容,代码 我考虑过函数组_CONCAT,但我不认为这是一个好的解决方案,因为它可以格式化查询中的文本 通过邮件从邮件组中选择邮件、组_concat'Article:',Article'-Code:',Code'\n' 我希望将数据保存在存储过程中,以供以后使用 如何在sql中实现这一点 我想这应该是SQL查询中经常出现的问题,但我是一个初学者,所以我允许自己问这个问题。GROUP\u CONC

我在sql server中的存储过程中得到了多个左联接的结果:

我需要在每封电子邮件中发送专栏文章的内容,代码

我考虑过函数组_CONCAT,但我不认为这是一个好的解决方案,因为它可以格式化查询中的文本

通过邮件从邮件组中选择邮件、组_concat'Article:',Article'-Code:',Code'\n'

我希望将数据保存在存储过程中,以供以后使用

如何在sql中实现这一点

我想这应该是SQL查询中经常出现的问题,但我是一个初学者,所以我允许自己问这个问题。

GROUP\u CONCAT是Mysql的一个功能,SQL Server不支持这种功能。您可以使用XML路径来保持格式

我希望将数据保存在存储过程中,以供以后使用


您不会将数据保留在存储过程中。您将查询保存在存储过程中并执行。

是的,我的错,我在MySQL中的测试中使用了GROUP_CONCAT。此查询返回的结果类似于GROUP_CONCAT。是否可以在单独的列上获取文章和代码,而不是逗号?我需要保留格式化的数据以供以后使用。
SELECT
    mail,
    STUFF((
    SELECT ', ' + article
    FROM mail
    WHERE (mail = mainMail.mail)
    FOR XML PATH (''))
    ,1,2,'') AS Articles,
    STUFF((
    SELECT ', ' + CAST(code AS VARCHAR(5))
    FROM mail
    WHERE (mail = mainMail.mail)
    FOR XML PATH (''))
    ,1,2,'') AS Codes
FROM mail mainMail
GROUP BY mail