2011-03-09 80 views
2

我正在使用SQL Server 2005併發送格式爲HTML的數據庫郵件。我得到了我需要的結果,但是我無法按照需要格式化表格。獲取SQL數據庫郵件以格式化帶有2列的HTML表格

有兩個獨立的SELECT語句正在運行,用於填充表格行。問題是我希望它們並排顯示,因爲它們彼此之間是相互關聯的,但它們只會顯示一個在另一個之上。我曾嘗試將它們放入更大的表格中的兩個表格中,但它不會將其移位。我在10年左右沒有使用過HTML,所以這可能是一個比腳本本身更重要的問題。

這裏是@body部分包含兩個SELECT語句:

N'<table border="1" cellpadding="0" cellspacing="0"><font face="arial">' + 
    N'<th>Store Number</th>' + 
    N'<td>'+ CAST ((SELECT store_num 
       FROM store_results 
       WHERE successful = 'N' 
       OR successful IS NULL 
       ORDER BY store_num ASC FOR XML PATH('tr'), TYPE) AS NVARCHAR(MAX))+'</td>'+ 
    N'</td>' + 
    N'<td><table border="1" cellpadding="0" cellspacing="0"><font face="arial">' + 
    N'<th>Reason</th>' + 
    N'<td>'+CAST ((SELECT 
       CASE successful 
       WHEN 'N' THEN 'Failed'    
        ELSE 'Did Not Run' 
       END 
      FROM store_results where successful = 'N' OR successful is null 
      ORDER BY store_num ASC FOR XML PATH('tr'), TYPE) AS NVARCHAR(MAX))+'</td>'+ 
    N'</td>' + 
    N'</table> 
+0

你有可能把當前正在生成的HTML的一小部分樣本放入問題中嗎? (對於每個表,可能顯示一行) – 2011-03-09 20:52:03

+0

正在發送的電子郵件是加密的,我無法提取最終結果HTML,但我鏈接到下面答案的註釋中輸出表的屏幕。 – 2011-03-09 21:11:27

回答

1

我終於想通了這一點。您必須先設置標題TD以創建列。而不是隻使用格式來讓它看起來如何。像這樣:

N'<table border="1" cellpadding="0" cellspacing="0"><font face="arial">' + 
N'<tr><td>Store Number</td><td>Reason</td></tr>' + 
N'<td>'+ CAST ((SELECT 
    td = store_num 
    td = reason 
     from store_results 
     ORDER BY store_num ASC FOR XML PATH('tr'), TYPE) AS NVARCHAR(MAX)) + 
N'</table> 

實際上,你可以通過堅持在TD/@屬性=大小寫格式基於查詢的結果,你的細胞...如果你想獲得看上它。我最終將所有結果放入sp的早期臨時表中,以使html代碼更簡單。