html - 获取 SQL 数据库邮件以格式化具有 2 列的 HTML 表

标签 html sql-server-2005 database-mail

我正在使用 SQL Server 2005 并发送一个 HTML 格式的数据库邮件。我得到了我需要的结果,但我很难按照我想要的方式格式化表格。

正在运行两个单独的 SELECT 语句来填充表行。问题是我希望它们并排显示,因为它们彼此相关,但它们只会显示一个在另一个之上。我试过将它们放在一个更大的表中的两个表中,但它不会转移它。我已经有大约 10 年没有使用 HTML 了,所以这可能是脚本本身的问题。

这是包含两个选择语句的@body 部分:

    N'<table border="1" cellpadding="0" cellspacing="0"><font face="arial">' +
    N'<th>Store Number</th>' +
    N'<td>'+ CAST ( ( SELECT store_num
              FROM store_results 
              WHERE successful = 'N'
                OR successful IS NULL 
              ORDER BY store_num ASC FOR XML PATH('tr'), TYPE ) AS NVARCHAR(MAX) )+'</td>'+
    N'</td>' +
    N'<td><table border="1" cellpadding="0" cellspacing="0"><font face="arial">' +
    N'<th>Reason</th>' +
    N'<td>'+CAST ( ( SELECT 
                CASE successful
                WHEN 'N' THEN 'Failed'              
                    ELSE 'Did Not Run'
                END
            FROM store_results where successful = 'N' OR successful is null
            ORDER BY store_num ASC FOR XML PATH('tr'), TYPE ) AS NVARCHAR(MAX) )+'</td>'+
    N'</td>' +
    N'</table>

最佳答案

我终于明白了。您必须先设置标题 TD 才能创建列。而不是只使用格式来让它看起来像你想要的那样。像这样:

N'<table border="1" cellpadding="0" cellspacing="0"><font face="arial">' +
N'<tr><td>Store Number</td><td>Reason</td></tr>' +
N'<td>'+ CAST ( ( SELECT 
    td = store_num
    td = reason
        from store_results
        ORDER BY store_num ASC FOR XML PATH('tr'), TYPE ) AS NVARCHAR(MAX) ) +  
N'</table>

您实际上可以根据查询结果格式化您的单元格,方法是坚持使用 td/@attribute = case... 如果您想使用它。我最终将所有结果放入 sp 中较早的临时表中,以使 html 生成代码更简单。

关于html - 获取 SQL 数据库邮件以格式化具有 2 列的 HTML 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5251895/

相关文章:

database - 标识列中的重复值

php - 在将表单提交给 PHP 之前检查文件扩展名

html - 如何使用 CSS 禁用表单字段?

jquery - 让隐藏的 div 出现然后消失?

sql-server - 从SQL Server触发器调用Powershell脚本

sql-server - 从 SQL Server 2012 存储过程发送电子邮件

sql-server - SQL Server DatabaseMail 突然频繁失败

html - 如何合并 HTML 表格中的行和列

sql - CASE 中的排序依据和不同类型

sql-server - SQL Server ODBC性能损失?