格式化SQL Server中的输出

时间:2016-08-14 08:41:52

标签: sql sql-server sql-server-2008

我正在向多个邮件发送查询结果以进行管理搜索。

输出结构不合理

out put in the mail

我希望输出更有条理,并且比现在更好。

我该怎么做?

PS:我试图使用'cast'但是put put仍然是相同的

1 个答案:

答案 0 :(得分:1)

SQL Server是一个数据管理系统,你也不能依靠sql server来呈现数据,对于数据展示你应该使用适当的工具,某种报告工具,如SSRS,QlikView或tableau等。

无论如何,您可以从sql server查询中动态创建一些html,并在您的电子邮件正文中使用该HTML。

测试数据

Declare @t table (Asset_Name VARCHAR(100), Expire_Date DATE)
INSERT INTO @t VALUES
('Fortigate100D'  , '2016-09-01'),
('Test'           , '2016-09-15')

查询

Declare @htmlBody nvarchar(max); 

SET @htmlBody = N'<table border="1">  
                <tr>
                    <th>Asset_Name</th>
                    <th>Expire_Date</th>
                </tr>'

SELECT @htmlBody + CAST ( (
SELECT td = CAST(ISNULL(Asset_Name,'') AS VARCHAR(100)),'',
       td = ISNULL(CONVERT(VARCHAR(10) ,Expire_Date,120),''),''
FROM @t 
ORDER BY Asset_Name
FOR XML PATH('tr'), TYPE) AS NVARCHAR(MAX) ) + '</table>'


PRINT @htmlBody

结果

将创建html表,并在浏览器中显示它......

<table border="1"> 
	<tr>
		<th>Asset_Name</th>
		<th>Expire_Date</th>
	</tr>
	<tr>
		<td>Fortigate100D</td>
		<td>2016-09-01</td>
	</tr>
	<tr>
	   <td>Test</td>
	   <td>2016-09-15</td>
	</tr>
</table>