我有一个SQL查询,用于生成退回电子邮件地址列表。我遇到的问题是,无论我做什么,当b.SubscriberKey
为0或不存在时,我都不会回复任何内容。当b.SubscriberKey
大于0时,此工作正常。
我认为它与在一个可能没有匹配行的表上进行连接有关,但我相信这会导致计数为0或null。当我更改我的查询以测试它时,我仍然一无所获。
编辑:我正在寻找字符串'No Bounces'以显示查询在我知道实际上没有发生跳出的那天运行。当前运行时,结果完全空白。
Select
case
when count(b.SubscriberKey) is not null
then b.SubscriberKey
else 'No bounces'
end as SubscriberKey
from
_bounce b
Join
_Job j with (nolock) on j.JobID = b.JobID
where
convert(date, b.EventDate) = convert(date, dateadd(dd, -1, getdate()))
and j.EmailID = 66653
group by
b.SubscriberKey
答案 0 :(得分:1)
根据我的理解,您需要在您的结果中显示值为0或NULLS的Subscriberkeys,并且您还声明它可能没有该Join表中的记录。正如您自己所说,在这种情况下,最好的选择是LEFT Join而不是INNER JOIN
Select case when b.SubscriberKey is not null then b.SubscriberKey else 'No bounces' end as SubscriberKey
from _Job j with (nolock)
LEFT Join _bounce b
on j.JobID = b.JobID
where convert(date,b.EventDate)=convert(date,dateadd(dd,-1,getdate()))
and j.EmailID = 66653
group by b.SubscriberKey