当我将查询作为电子邮件发送时,ROUND不起作用

时间:2018-04-17 22:59:17

标签: sql-server tsql

所以我在下面的代码中使用存储过程发送html格式的电子邮件。我从这里得到了它:

https://stackoverflow.com/a/29708178/1452574

现在,代码运行得很好,我有一个很好的html表,但问题是我的ROUND没有阻止。如果我在SSMS中运行代码,它显然可以工作,舍入到2个小数位,但是当我收到电子邮件时,数字列看起来像这样:

enter image description here

我的意思是,我猜它是四舍五入的,但我不想在最后看到所有那些额外的零或加号。我已经尝试过铸造和格式化为一百万种不同的数据类型,我似乎无法得到一个带有2位小数的好数字。我得到一个完整的数字(如果我演员说Numeric),或者你在上面的截图中看到的混乱。我尝试使用FORMAT来N2,但是出现了这个错误:

  

将nvarchar值“3.39”转换为数据类型int时转换失败。

下面的代码,这不是全部,但第一部分只是测试行数,所以我不认为它是相关的:

EXEC spQueryToHtmlTable @html = @html OUTPUT,  
@query = 
N'SELECT
    e.EmplName,
    CASE
        WHEN SUM(t.ManHrs) IS NULL THEN 0
        ELSE ROUND(SUM(t.ManHrs), 2)
    END AS [Hrs Logged]
FROM EmplCode e 
    LEFT JOIN TimeTicketDet t ON e.EmplCode = t.EmplCode 
    AND CAST(t.TicketDate AS DATE) = CAST(GETDATE() AS DATE) 
    AND t.WorkCntr <> 50
WHERE e.DeptNum LIKE ''PROD %''
    AND e.Active = ''Y''
GROUP BY e.EmplName
HAVING ROUND(SUM(t.ManHrs), 2) < 6
    OR ROUND(SUM(t.ManHrs), 2) IS NULL';

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'Email System',
    @recipients = 'sample@gmail.com',
    @body = @html,
    @body_format = 'HTML',
    @query_no_truncate = 1,
    @attach_query_result_as_file = 0,
    @execute_query_database = 'CompanyDB';

0 个答案:

没有答案