来自多个相同记录的不同的一个值导致查询

时间:2018-01-23 18:49:29

标签: sql sql-server email stored-procedures

我在sql server中的存储过程中有这个结果(多次左连接的结果):

http://sqlfiddle.com/#!18/be597/1

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

我考虑过GROUP_CONCAT函数,但我不认为这是一个很好的解决方案,因为它会将查询中的文本格式化。

SELECT mail, GROUP_CONCAT(CONCAT('Article: ', article, ' - Code: ', code), '\n') FROM mail GROUP BY mail

我想将数据保存在存储过程中供以后使用。

如何在sql中执行此操作?

我认为这应该是SQL查询的反复出现的问题,但我是初学者,所以我允许自己提出这个问题。

1 个答案:

答案 0 :(得分:1)

GROUP_CONCAT是一个Mysql功能,SQL Server不支持这种功能。您可以使用FOR XML PATH

来保持格式
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

Demo

  

我想将数据保存在存储过程中供以后使用。

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