2013-10-31 30 views
1

我有一个表:如何将select语句结果转换为SQL Server中的HTML表格?

Select A, B, C 
FROM Table 
WHERE Z = P 
AND Y = N 

我想捕捉的结果,并创建一个HTML表出来的,因为这样的:

DECLARE @HTMLTable VARCHAR(MAX) 

@HTMLTable = ??? 

A B C 
xx xxx xxxxx 
x xx x 
xx x xxx 

等。

原因是因为我想通过电子邮件发送这个HTML表格。

我该如何去做这件事?

+0

参见:http://stackoverflow.com/questions/7265494/sql-server-send-email –

+1

我知道如何发送电子邮件......我试图找出如何将SQL结果集转换为HTML表格 –

回答

6

使用FOR XML PATH(从这里的其他人那里了解到)。是这样的:

SET @tableHTML = 
N'<table>' + 
N'<tr><th>SpecialOfferID</th> 
<th>Description</th> 
<th>Type</th> 
<th>Category</th> 
<th>StartDate</th> 
<th>EndDate</th> 
</tr>' + 
CAST ((
SELECT td = CAST([SpecialOfferID] AS VARCHAR(100)),'', 
td = [Description],'', 
td = [Type],'', 
td = [Category] ,'', 
td = CONVERT(VARCHAR(30),[StartDate],120) ,'', 
td = CONVERT(VARCHAR(30),[EndDate],120) 
FROM [AdventureWorks].[Sales].[SpecialOffer] 
ORDER BY [SpecialOfferID] 
FOR XML PATH('tr'), TYPE 
) AS NVARCHAR(MAX)) + 
N'</table>' 
+0

它将所有内容(对于一行)放在一个单独的​​中,如果我删除,',请你帮我理解为什么,如果你知道? – Mzn

+0

很好的答案。任何方式以通用的方式完成该任务? – bashan

0
create table #table (
    a varchar(50), 
    b varchar(50), 
    c varchar(50) 
) 
insert into #table values 
    ('xx','xxx','xxxx'), 
    ('aaa','b','cc'), 
    ('xxxx','xx','xx xxxx') 
go 
DECLARE @HTMLTable VARCHAR(MAX) 

set @HTMLTable = '<table><thead><tr><th>a</th><th>b</th><th>c</th></tr></thead><tbody>' 

select @HTMLTable += '<tr><td>'+a+'</<td><td>'+b+'</<td><td>'+c+'</<td></tr>' 
from #table 

set @HTMLTable+='</tbody></table>' 

print @HTMLTable 
相关问题