SQL Server电子邮件中的多个表

SQL Server电子邮件中的多个表,sql,sql-server,Sql,Sql Server,下面的代码允许我用一个表发送电子邮件 我不确定如何在电子邮件中创建另一个表并使用另一个查询,以便在一封电子邮件中显示这两个结果 仅供参考,我正在使用SQL Server 2012 SELECT * FROM #WKPLAN DECLARE @xml NVARCHAR(MAX) DECLARE @body1 NVARCHAR(MAX) DECLARE @EmailBody AS VARCHAR(MAX) SET @xml = CAST((SELECT

下面的代码允许我用一个表发送电子邮件

我不确定如何在电子邮件中创建另一个表并使用另一个查询,以便在一封电子邮件中显示这两个结果

仅供参考,我正在使用SQL Server 2012

SELECT * 
FROM #WKPLAN

DECLARE @xml NVARCHAR(MAX)
DECLARE @body1 NVARCHAR(MAX)
DECLARE @EmailBody AS VARCHAR(MAX)

SET @xml = CAST((SELECT
                     [Day of Week] AS 'td', '',
                     [Cycle_%_MTD] as 'td', ''
                 FROM 
                     #WKPLAN
                 FOR XML PATH('tr'), ELEMENTS) AS NVARCHAR(MAX))

SET @body1 ='<html><body><H5>See below for the weekend plan</H5>
<table border = 1> 
<tr><th><center>Day of Week</center></th></td>' +
N'<th><center>Cycle % MTD</center></th></td>'

SET @body1 = @body1 + '<H5>' + @xml + '</H5>' + '</table></body></html>'

EXEC data.dbo.usp_EmailProgress
          @Reply_to = ‘’,
          @Recipients = ‘’,
          @copy_recipients = ‘’,
          @Subject = 'Email,
          @body = @body1,
          @body_format ='HTML'
设置@body1=@body1++@xml++',然后创建一个新行,如SET@body1=@body1++,以及另外一行来结束body和html标记SET@body1=@body1+,您还需要声明另一个xml变量并将第二个查询结果存储到其中。。。您的新代码如下所示:

SELECT * 
FROM #WKPLAN

DECLARE @xml NVARCHAR(MAX)
DECLARE @body1 NVARCHAR(MAX)
DECLARE @EmailBody AS VARCHAR(MAX)

SET @xml = CAST((SELECT
                     [Day of Week] AS 'td', '',
                     [Cycle_%_MTD] as 'td', ''
                 FROM 
                     #WKPLAN
                 FOR XML PATH('tr'), ELEMENTS) AS NVARCHAR(MAX))
DECLARE @xml2 NVARCHAR(MAX)
 SET @xml2 = (whatever your second query is)

SET @body1 ='<html><body><H5>See below for the weekend plan</H5>
<table border = 1> 
<tr><th><center>Day of Week</center></th></td>' +
N'<th><center>Cycle % MTD</center></th></td>'

SET @body1 = @body1 + '<H5>' + @xml + '</H5>' + '</table>'
SET @body1 = @body1 + '<H5>(whatever you want the title of the second table to be)</H5><table border = 1><tr><th><center>Column1</center></th></td><th><center>Column2</center></th></td>' + @xml2
SET @body1 = @body1 + '</body></html>'


EXEC data.dbo.usp_EmailProgress
          @Reply_to = ‘’,
          @Recipients = ‘’,
          @copy_recipients = ‘’,
          @Subject = 'Email',
          @body = @body1,
          @body_format ='HTML'

它工作正常,但第二个查询没有以文本形式显示在表中:

如何将第二个查询中的列名添加到此处?我已对此进行了调整,以将其包括在内。感谢您的帮助,我几乎获得了所需的内容,只需知道如何将第二部分放入表中即可查看下面的结果查看我对的响应您发布的答案。SET@body1=@body1++@xml2++更改为SET@body1=@body1++@body2++@xml2++
DECLARE @xml NVARCHAR(MAX)
DECLARE @body1 NVARCHAR(MAX)
DECLARE @EmailBody AS VARCHAR(MAX)
SET @xml =CAST(( 

Select --[Date] as 'td', '',
       [Day of Week] as 'td', '',
         [Cycle_%_MTD] as 'td', ''


FROM #WKPLAN

FOR XML PATH('tr'), ELEMENTS) AS NVARCHAR(MAX))

DECLARE @xml2 NVARCHAR(MAX)
DECLARE @body2 NVARCHAR(MAX)
DECLARE @EmailBody2 AS VARCHAR(MAX)
SET @xml2 = cast(( 

Select     [Day of Week] as 'td', '',
         [Cycle_%_MTD] as 'td', ''

         FROM #WKPLAN
FOR XML PATH('tr'), ELEMENTS) AS NVARCHAR(MAX))


SET @body1 ='<html><body><H5>See below for the weekend plan</H5>
<table border = 1> 
<tr><th><center>Day of Week</center></th></td>' +
N'<th><center>Cycle % MTD</center></th></td>'

SET @body1 = @body1 + '<H5>' + @xml + '</H5>' + '</table></body></html>'

SET @body2 ='<html><body><H5>Test</H5>
<table border = 1> 

<tr><th><center>Day of Week</center></th></td>' +
N'<th><center>Cycle % MTD</center></th></td>'

SET @body1 = @body1 + '<H5>' + @xml2 + '</H5>' + '</table></body></html>'

EXEC data.dbo.usp_EmailProgress
 @Reply_to = ‘’
,@Recipients = ‘’
,@copy_recipients = ''
,@body = @body1
,@body_format ='HTML'
,@subject = 'Test'