Отправить результат подзапроса по электронной почте в формате html - PullRequest
0 голосов
/ 18 мая 2019

У меня есть рабочий запрос:

SELECT TOP (1000) [dashboard_name]
,[dashboard_path]
,[UserName]
,[timestamp]
,(SELECT TOP(1) DATEDIFF(day, timestamp, GETDATE()) FROM [Monitoring].[dbo].[Temporary_logins_log] t WHERE t.dashboard_name = dashboard_name AND t.dashboard_path = dashboard_path AND t.UserName = UserName) AS [Age] 
FROM [Monitoring].[dbo].[Temporary_logins_log] where timestamp = CONVERT(VARCHAR(10), getdate(), 111)

И я хотел бы отправить результаты по почте, используя:

DECLARE @tableHTML  NVARCHAR(MAX) ;  

SET @tableHTML =  
    N'<H1>Header</H1>' +  
    N'<table border="1">' +  
    N'<tr><th>Report Name</th><th>Report Path</th>' +  
    N'<th>LoginName</th><th>Date</th><th>Age (days)</th></tr>' +  
    CAST ( ( SELECT td = t.dashboard_name, '',  
                    td = t.dashboard_path, '',  
                    td = t.UserName, '',  
                    td = t.timestamp, '',
                    td = (SELECT TOP(1) DATEDIFF(day, l.timestamp, GETDATE()) FROM [Monitoring].[dbo].[Temporary_logins_log] l WHERE t.dashboard_name = l.dashboard_name AND t.dashboard_path = l.dashboard_path AND t.UserName = l.UserName) AS [Age], ''
              FROM [Monitoring].[dbo].[Temporary_logins_log] t where timestamp = CONVERT(VARCHAR(10), getdate(), 111)
              FOR XML PATH('tr'), TYPE   
    ) AS NVARCHAR(MAX) ) + N'</table>' ;  

EXEC msdb.dbo.sp_send_dbmail @recipients='name@work.com',  
    @subject = 'SQL Report',  
    @body = @tableHTML,  
    @body_format = 'HTML' ;

но я получаю синтаксическую ошибку рядом с ключевым словом AS . Можно ли отправить результат подзапроса, используя этот код, или мне нужно переделать его, чтобы объединить таблицу с самим собой, без использования подзапроса?

1 Ответ

1 голос
/ 18 мая 2019

Эта строка в запросе не имеет смысла:

td = (SELECT TOP(1) DATEDIFF(day, l.timestamp, GETDATE()) 
      FROM [Monitoring].[dbo].[Temporary_logins_log] l 
      WHERE t.dashboard_name = l.dashboard_name AND 
            t.dashboard_path = l.dashboard_path AND
             t.UserName = l.UserName
     ) AS [Age], ''

Вы хотите, чтобы псевдоним столбца был td или [Age]? Я предполагаю td. Если это так, удалите as [Age].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...