結果を電子メールで送信するようにクエリを設定していますが、結果のフォーマットが正しくありません。
テーブル 1 で特定のフィールドが null である 2 つのテーブルから値を選択し、テーブル 1 id = テーブル 2 id であるテーブル 2 から関連フィールドを追加したいと考えています。ただし、テーブル 2 にはない可能性があるが、特定のフィールドが null であるテーブル 1 のフィールドも含めます。
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';
しかし、次のように表示されます。
NEW CLIENT PURCHASES
CUSTkEY CLIENT NAME NEW PURCHASES SOLD DATE ORDERED DATE PRODUCT ID
9189ad PHOEBE LDS 20130107T12:15:00 NULL BGD01
8765ad MONICA PANTS 20130107T12:15:00 NULL BGD01
3421ad JOEY BAG 20130107T12:15:00 NULL BGD01
2354ad RACHEL HAT 20130107T12:15:00 NULL BGD01
7653ef SHOES 20121213T06:15:00 hfd00
ご覧のとおり、最後の行はたまたまテーブル 1 の行であり、クライアント テーブル 2 にはクライアントが存在しないため、行は次のようになります。
CUSTkEY CLIENT NAME NEW PURCHASES SOLD DATE ORDERED DATE PRODUCT ID
7653ef SHOES 20121213T06:15:00 NULL hfd00