2015-03-03 57 views
-1

我有这个代码到目前为止,我想让他们联合到一个问题,但我不能得到它的工作。我一直试图做一个新的选择周围转换和一切下来作为Nvarchar。我想做一个有两个选择的联盟,并放在一个表

DECLARE @tableHTML NVARCHAR(MAX); 
SET @tableHTML = 
N'<H3>Felaktiga rader</H3>'+ 
N'<table border="1">'+ 
N'<tr><th>ID</th>'+ 
N'<th>Value</th>'+ 
N'<th>Reason</th>'+ 

CAST ((SELECT td=ID,'', 
td = Value,'', 
td = Reason,'' 

FROM Mail.dbo.CheckMe 
WHERE Value = '120' OR Value = '220' 
UNION 
Mail.dbo.CheckMeTwo 
WHERE Value = '120' OR Value = '220' 

for XML path ('tr'), TYPE 
) as NVARCHAR(MAX))+ 
N'</table>'; 

EXEC msdb.dbo.sp_send_dbmail 
@recipients = '[email protected];', 
@subject = ' Felaktiga Rader', 
@body = @tableHTML, 
@body_format = 'HTML'; 

回答

0

我这样解决了。

FROM (SELECT * FROM Mail.dbo.CheckMe 
WHERE Value = '120' OR Value = '220' 
UNION 
SELECT * FROM Mail.dbo.CheckMeTwo 
WHERE Value = '120' OR Value = '220') T 
0

忘记了选择在第二个查询中的列!!!!

SELECT td=ID,'',td = Value,'', td = Reason,'' 
FROM Mail.dbo.CheckMe 
WHERE Value = '120' OR Value = '220' 
UNION 
SELECT td=ID,'',td = Value,'', td = Reason,'' 
FROM Mail.dbo.CheckMeTwo 
WHERE Value = '120' OR Value = '220' 

您需要在您的UNION结构中为每个查询选择一个列表!

+0

没有必要,在FROM查询之前完成的那个 – Girre 2015-03-03 08:32:20

+0

当然有必要!你在回答中改变了它.... – CeOnSql 2015-03-03 08:46:33

相关问题