0

同じデータから短い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 
4

1 に答える 1

1

行を保持する変数を宣言してnvarchar(max)から、次のように連結できます。

DECLARE @BadText nvarchar(max)
SET @BadText = ''
SELECT @BadText = @BadText + Airline + '; Feed=' + ST.Feed + '; ' +  
    'MinutesSinceLastMessage=' + MinutesSinceLastMessage 
WHERE Rating = 'BAD'

SET @SMSEmailText = 
        'BizTalk Feed Alert ' + @BadText 

intsここで、任意の/ floatstoもキャストする必要がありnvarchars、好みに合わせてフォーマットを整える必要がありますが、それで十分です。

于 2012-08-27T20:31:35.670 に答える