同じデータから短いSMSメッセージと完全にフォーマットされた電子メールを作成しようとしています。テキストメールの目的で、2行をatableからSQL文字列に変換するにはどうすればよいですか。
テーブルには4行しかなく、独自の基準を使用して「良い」または「悪い」の評価を割り当てています。完全にフォーマットされた電子メールには4行すべてが表示されますが、SMSには不良行のみが表示される必要があります。
私はおそらくsp_send_dbmailを使用して2つの電子メールを送信し、Outlookを使用してSMSを電話とSMSテキストにルーティングする人もいれば、電話で別のアラートシステムを使用してデバイスで電子メールを読む人もいます。
これが私がやりたいことの例です。@htmlEmailTextは、「FOR XML」句を使用しているため、正常に機能しています。
if @format = 'EMAIL'
begin
SET @SMSEmailText =
'BizTalk Feed Alert ' +
CAST ((
SELECT Airline, 'Feed=' + ST.Feed, 'MinutesSinceLastMessage=' + MinutesSinceLastMessage
where Rating = 'BAD')
) AS NVARCHAR(MAX) )
;
SET @htmlEmailText =
N'<H1>BizTalk Feed Alert</H1>' +
N'<table border="1">' +
N'<tr>' +
N'<th>Rating</th>' +
N'<th>Airline</th>' +
N'<th>Feed</th>' +
N'<th>MinutesSinceLastMessage</th>' +
N'<th>AlertMinutes</th>' +
N'<th>LocalDateTimeLastMsgRcvd</th>' +
N'<th>CountMessageInLastHour</th>' +
N'<th>AvgCountPerSameHour</th>' +
CAST ( ( SELECT td = Rating, '',
td = Airline, '',
td = ST.Feed, '',
td = MinutesSinceLastMessage, '',
td = AlertMinutes, '',
td = LocalDateTimeLastMsgRcvd, '',
td = CountMessageInLastHour, '',
td = AvgCountPerSameHour, ''
from @StatsTable ST
left outer join @CountTable CT on ST.Feed = CT.Feed
left outer join @AvgTable AT on ST.Feed = AT.Feed
FOR XML PATH('tr'), TYPE
) AS NVARCHAR(MAX) ) +
N'</table>'
;
end