Sql server 2008 sql server使用外部联接结果转换为表格式
我正在设置查询以通过电子邮件发送结果,结果格式不正确 我想从两个表中选择值,其中表1中的某个字段为空,并从表2中添加一个相关字段,其中表1 id=表2 id。但也包括表1中可能不在表2中但具有某个字段为空的字段Sql server 2008 sql server使用外部联接结果转换为表格式,sql-server-2008,html-email,outer-join,Sql Server 2008,Html Email,Outer Join,我正在设置查询以通过电子邮件发送结果,结果格式不正确 我想从两个表中选择值,其中表1中的某个字段为空,并从表2中添加一个相关字段,其中表1 id=表2 id。但也包括表1中可能不在表2中但具有某个字段为空的字段 DECLARE @TITLE NVARCHAR(MAX) DECLARE @BODY NVARCHAR(MAX) SET @TITLE =CAST(( SELECT DISTINCT A.CUSTKEY as 'td','', B.CUSTPROJ as 'td','',
DECLARE @TITLE NVARCHAR(MAX)
DECLARE @BODY NVARCHAR(MAX)
SET @TITLE =CAST(( SELECT DISTINCT A.CUSTKEY as 'td','',
B.CUSTPROJ as 'td','', A.ITEMS AS 'td','', A.SOLDDATE as 'td','',
A.LASTORDEREDDATE as 'td','', A.OBJID as 'td'
FROM PRODUCTDATA AS A LEFT OUTER JOIN CLIENT_TABLE as B
on A.CUSTkey = B.CUSTkey
WHERE LASTORDEREDDATE IS NULL GROUP BY A.CUSTKEY,B.CUSTPROJ,
A.ITEMS, A.SOLDDATE, A.OBJID,A.LASTORDEREDDATE
FOR XML PATH ('tr'), ELEMENTS) AS NVARCHAR(MAX))
SET @BODY = '<html><body><H4>NEW CLIENT PURCHASES</H4>
<table border = 2>
<tr>
<th> CUST KEY </th> <th> CLIENT NAME </th> <th> NEW PURCHASES </th>
<th> SOLD DATE </th> <th> ORDERED DATE </th> <th> PRODUCT ID </th></tr>'
SET @BODY = @BODY + @TITLE + '</TABLE></BODY></HTML>'
EXEC msdb.dbo.sp_send_dbmail @profile_name='DB Admin',
@body = @BODY,
@body_format = 'HTML';
如您所见,最后一行恰好是表1中的一行,其中客户端在客户端表2中不存在,因此该行应如下所示:
CUSTkEY CLIENT NAME NEW PURCHASES SOLD DATE ORDERED DATE PRODUCT ID
7653ef SHOES 20121213T06:15:00 NULL hfd00
SELECT
(SELECT (SELECT n1) FOR XML PATH('td'),TYPE),
(SELECT (SELECT n2) FOR XML PATH('td'),TYPE),
(SELECT (SELECT n3) FOR XML PATH('td'),TYPE)
FROM (VALUES(NULL,NULL,1))x(n1,n2,n3)
FOR XML PATH('tr'), ELEMENTS
要在有多个同名列时包含空标记,必须将每个列包装到其自己的XML生成器中,如下所示:
CUSTkEY CLIENT NAME NEW PURCHASES SOLD DATE ORDERED DATE PRODUCT ID
7653ef SHOES 20121213T06:15:00 NULL hfd00
SELECT
(SELECT (SELECT n1) FOR XML PATH('td'),TYPE),
(SELECT (SELECT n2) FOR XML PATH('td'),TYPE),
(SELECT (SELECT n3) FOR XML PATH('td'),TYPE)
FROM (VALUES(NULL,NULL,1))x(n1,n2,n3)
FOR XML PATH('tr'), ELEMENTS
生成的HTML是什么样子的?尝试在查询中使用
XSINIL
,如查询XML路径('tr')、元素XSINIL
。也许它会允许为空值保留占位符xsinil工作了…感谢muchI不理解PRODUCTDATA中的from(VALUES(NULL,NULL,1))x(n1,n2,n3)行作为左外部连接客户机\表作为A.CUSTkey=B.CUSTkey上的B,其中LASTORDEREDDATE为NULL组由A.CUSTkey,B.CUSTPROJ,A.ITEMS,A.SOLDDATE,A.OBJID,XML路径('tr'),元素)的A.LASTORDEREDDATE作为NVARCHAR(MAX))