Возникла проблема с форматированием вывода запроса SQL Server, который является частью задания агента SQL Server. Задание «Мой агент» содержит следующий код в единственном «шаге»:
DECLARE @xml NVARCHAR(MAX)
DECLARE @body NVARCHAR(MAX)
SET @xml = CAST((SELECT (CAST(getdate() as DATE)) as 'td'
,''
,M.[Serial Number] as 'td'
, ''
,case MR.MTUID
when 21180200 then round(ceiling((cast(MR.RegisterRead as float)/10)),0,1)
when 47374728 then round(ceiling((cast(MR.RegisterRead as float))),0,1)
end as 'td'
FROM [StarDatabase].[dbo].[Account MTU Meter Xref] MX
INNER JOIN Meters M on
M.[Meter ID] = mx.[Meter ID]
INNER JOIN NonScaledReads MR on MR.MTUID = MX.[MTU ID]
WHERE MX.[MTU ID] IN (21180200, 47374728)
and MR.ReadingTime >= cast(cast(getdate() as date) as datetime) + cast('08:00' as datetime)
and MR.ReadingTime <= cast(cast(getdate() as date) as datetime) + cast('08:59' as datetime)
order by MR.ReadingTime
FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX))
SET @body ='<html><body><H3>Meter Readings at 04:00 AM</H3>
<table border = 1>
<tr>
<th> Date </th> <th> Meter Serial # </th> <th> Reading </th></tr>'
SET @body = @body + @xml +'</table></body></html>'
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'email',
@recipients = 'xxx@abc.xyz',
@subject = '4:00 AM Meter Reads',
@body = @body,
@body_format ='HTML'
Вывод моей электронной почты выглядит как прикрепленное изображение, и я пытаюсь найти способ сделать последний столбец целым числом безэкспоненциальная запись. Я должен выполнить все эти операции «cast» и «round» в выражении CASE, потому что значение хранится в столбце varchar.
![Partial napshot of email body](https://i.stack.imgur.com/8Lfjf.png)
В этом случае значения в последнем столбце должны читаться как 9611174 и 7289261. Вывод в текстовом файле или в таблице результатов запроса отображается так, как я хочу,Однако итоговое письмо с содержимым HTML имеет экспоненциальную запись.