私は毎日送信するレポートを作成しています。列の 1 つに、販売注文に関連付けられたすべてのアイテム番号の文字列があります (つまり、1 つの販売注文から複数のアイテム番号になる可能性があります)。アイテム番号文字列は、',' で区切られます。これを行うために、STUFF 内の XML PATH('') に対して、注文番号が同じである Select ステートメントを使用しています。
データのこの一時テーブルを生成した後、データの電子メールを送信しています。テーブルを設定して送信する@mailmsgでHTMLフォーマットを使用しています。私の問題は、すべてのアイテム番号がすべて同じ行にある列を電子メールで送信したときに、それらを新しい行 (ただし同じセル) にソフト リターンする必要があることです。
STUFF 関数で CHAR(10) と CHAR(13) を使用しようとしましたが、うまくいきませんでした。
助言がありますか?以下は、私の一時テーブルへの私のコードです。
UPDATE @SOTable
Set PODetails = STUFF( (
Select ', PONumber: ' + CAST(PONum AS VARCHAR),
', POQty: ' + CAST(POQty AS VARCHAR)
From @POTable
Where SONo = PONo
FOR XML PATH('')
),1, 1, '')
次に、メール メッセージの場合、テーブル ヘッダーにデータを入力した後、データに対して次の操作を行います。
CAST ((
select
(convert(varchar(8), SO.SONum)) as [TD align=center], '',
(CONVERT(varchar(8), SO.SOItmNo)) as [TD align=center], '',
td = (ltrim(rtrim(SO.SODesc))), '',
(convert(varchar(8), SO.SONSN)) as [TD align=center], '',
CONVERT(varchar(8), SO.SOSRNo)as [TD align=center], '',
convert(varchar(3), SO.SOSRQty)as [TD align=center], '',
convert(varchar(3), SO.SOUOM)as [TD align=center], '',
CAST(convert(varchar, SO.SODate, 101) AS VARCHAR) as [TD align=center], '',
td = SO.PODetails
from @SOTable SO
order by SO.SODate
for XML RAW('tr'), ELEMENTS
) as nvarchar(max))