我正在使用msdb.dbo.sp_send_dbmail根据查询结果发送电子邮件。直到我在查询中使用并且为null之前,它都可以正常工作。查询返回正确的结果,但不会触发消息。当所讨论的字段不为空时,它可以正常工作。
我想对照检查日期验证builddate。当它们不匹配时,我想发送电子邮件。对于表未填充且builddate为null的情况,我使用了nullull。
我的基本查询如下:
SELECT
ISNULL(MAX(convert(date,Builddate)),DATEADD(YEAR,-10,GETDATE())) AS
[builddate],
CONVERT(VARCHAR(10),GETDATE(),121)AS [checkdate]
FROM dbo. XXXX_BPCCustomer_Test
HAVING ISNULL(MAX(convert(date,Builddate)),DATEADD(YEAR,-10,GETDATE()))
<>CONVERT(VARCHAR(10),GETDATE(),121)
结果为builddate = 2010-01-03和checkdate = 2020-01-3
推送电子邮件的代码如下:
DECLARE @recordcount INT
SELECT @recordcount = ISNULL(COUNT(*),0)
FROM [YCH-REPORTING\YCHANALYTICS].[x3v7].[dbo].[Dataset_BPCCustomer_Test]
HAVING ISNULL(MAX(convert(date,Builddate)),DATEADD(YEAR,-10,GETDATE()))
<>CONVERT(VARCHAR(10),GETDATE(),121)
IF (@recordcount > 0)
BEGIN
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'SQL Mail',
@recipients = 'john.XXXXXXXXX.com;XXXXXXXXXXXXXXX',
@query = 'SELECT
ISNULL(MAX(convert(date,Builddate)),DATEADD(YEAR,-10,GETDATE())) AS
[builddate],
CONVERT(VARCHAR(10),GETDATE(),121)AS
[checkdate],"Dataset_BPCCustomer_Test" as [Table]
FROM [XXXXXX\YCHANALYTICS].[x3XX].[dbo].
[Dataset_BPCCustomer_Test]
HAVING
ISNULL(MAX(convert(date,Builddate)),DATEADD(YEAR,-10,GETDATE()))
<>CONVERT(VARCHAR(10),GETDATE(),121)'
,
@subject = ' DataSet did not update or isnull',
--@attach_query_result_as_file = 1,
--@query_result_header = 0,
@body =0;
END
似乎没有在处理isull语句?任何建议和感谢。
@query