я использую нечто похожее на примере C на этой странице MSDN: http://msdn.microsoft.com/en-us/library/ms190307.aspxsp_send_dbmail - форматирование строки в таблице как красный для предупреждения
DECLARE @tableHTML NVARCHAR(MAX) ;
SET @tableHTML =
N'<H1>Work Order Report</H1>' +
N'<table border="1">' +
N'<tr><th>Work Order ID</th><th>Product ID</th>' +
N'<th>Name</th><th>Order Qty</th><th>Due Date</th>' +
N'<th>Expected Revenue</th></tr>' +
CAST ((SELECT td = wo.WorkOrderID, '',
td = p.ProductID, '',
td = p.Name, '',
td = wo.OrderQty, '',
td = wo.DueDate, '',
td = (p.ListPrice - p.StandardCost) * wo.OrderQty
FROM AdventureWorks.Production.WorkOrder as wo
JOIN AdventureWorks.Production.Product AS p
ON wo.ProductID = p.ProductID
WHERE DueDate > '2004-04-30'
AND DATEDIFF(dd, '2004-04-30', DueDate) < 2
ORDER BY DueDate ASC,
(p.ListPrice - p.StandardCost) * wo.OrderQty DESC
FOR XML PATH('tr'), TYPE
) AS NVARCHAR(MAX)) +
N'</table>' ;
EXEC msdb.dbo.sp_send_dbmail @recipients='[email protected]',
@subject = 'Work Order List',
@body = @tableHTML,
@body_format = 'HTML' ;
У меня есть столбец под названием рейтинг, который устанавливается на «Good» или «Плохо» по моей собственной логике. Я бы хотел, чтобы все линии, имеющие рейтинг «Плохие», имели красный фон. Я знаю, как это сделать в HTML, но не знаю, как это сделать с запросом «FOR XML», демонстрируемым в этом примере. Похоже, мне пришлось бы добавить атрибут к некоторым заявлениям TD, а не к другим.
Я знаю, этот вопрос не был активным в течение 5 лет, но если бы я хотел добавить 'ORDER BY' к конечному результату, где я должен добавить его? Переменная '@ Data' не имеет каких-либо знаний о столбцах в CTE. 'HTMLRowData' - это только одна длинная строка. Я хочу заказать по столбцу, например 'ProductID'. Любая помощь будет оценена по достоинству. –