27,581
社区成员
发帖
与我相关
我的任务
分享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='danw@Adventure-Works.com',
@subject = 'Work Order List',
@body = @tableHTML,
@body_format = 'HTML' ;DECLARE
@tableHTML nvarchar(max);
WITH
FIELD AS( -- 列名, 可以自定义, 也可以直接查 sys.columns
SELECT field_name = N'Work Order ID' UNION ALL
SELECT N'Product ID' UNION ALL
SELECT N'Name' UNION ALL
SELECT N'Order Qty' UNION ALL
SELECT N'Due Date' UNION ALL
SELECT N'Expected Revenue'
),
DATA AS( -- 数据定义
SELECT
wo.WorkOrderID,
p.ProductID,
p.Name,
wo.OrderQty,
wo.DueDate,
ExpectedRevenue = (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
)
SELECT
@tableHTML = (
SELECT
[H1] = N'Work Order Report',
[table/@border] = 1,
[tr] = (
SELECT
- = field_name
FROM FIELD
FOR XML PATH - ('th'), TYPE
),
- =
- (
SELECT
[@align] = 'right',
[@bgcolor] = '0000FF',
[td/@align] = 'center',
[td] = WorkOrderID,
NULL,
[td/@align]='left',
[td] = ProductID,
NULL,
[td] = Name,
NULL,
[td] = OrderQty,
NULL,
[td] = DueDate,
NULL,
[td/@bgcolor] = CASE
WHEN ExpectedRevenue > 90 THEN '0000FF'
END,
[td] = ExpectedRevenue
FROM DATA
ORDER BY DueDate, ExpectedRevenue DESC
FOR XML PATH('tr'), TYPE
)
FOR XML PATH('')
);
EXEC msdb.dbo.sp_send_dbmail
@recipients = 'danw@Adventure-Works.com',
@subject = 'Work Order List',
@body = @tableHTML,
@body_format = 'HTML';
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
[@align]='center', [@bgcolor]='0000FF', -- tr 上要设置的属性
[td/@align]='center', td = wo.WorkOrderID, '', -- 这一行居中
[td/@align]='left', td = p.ProductID, '', -- 这一行左对齐
td = p.Name, '',
td = wo.OrderQty, '',
td = wo.DueDate, '',
-- 根据条件设置属性(不满足条件为NULL值, 不要在输出中生成这个属性)
[td/@bgcolor]=CASE WHEN (p.ListPrice - p.StandardCost) * wo.OrderQty > 90 THEN '0000FF' END, 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>' ;
SELECT
@tableHTML
EXEC msdb.dbo.sp_send_dbmail @recipients='danw@Adventure-Works.com',
@subject = 'Work Order List',
@body = @tableHTML,
@body_format = 'HTML' ;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>' ;
PRINT @tableHTMLSET @tableHTML =
N'<html><body>' +
N'<table ........>'+
N'<tr align=center bgcolor=#0000FF><td>排名</td><td>单位名称</td><td>销售额</td><td>销售目标</td><td>达标率</td></tr>'<tr><td>第1名</td><td>北京市XX街XX专卖店</td><td>950000.00元</td><td>1000000.00元</td><td>95%</td></tr>
<tr><td>第2名</td><td>天津市XX街XX专卖店</td><td>850000.00元</td><td>1000000.00元</td><td>85%</td></tr><tr bgcolor=#0000FF align=right><td align=center>第1名</td><td align=left>北京市XX街XX专卖店</td><td>950000.00元</td><td>1000000.00元</td><td>95%</td></tr>
<tr align=right><td align=center>第2名</td><td align=left>天津市XX街XX专卖店</td><td>850000.00元</td><td>1000000.00元</td><td>85%</td></tr>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