2013-11-20 99 views
0

我有一個SQL查詢運行以生成退回的電子郵件地址列表。我遇到的問題是,無論我做什麼,當b.SubscriberKey爲0或不存在時,我都不會收回任何東西。這在b.SubscriberKey大於0時工作正常。SQL Server 2005在case語句中忽略其他else

我認爲這與在可能沒有匹配行的表上進行連接有關,但我相信這會導致計數爲0或null。當我改變我的查詢來測試這個時,我仍然沒有得到任何東西。

編輯:我正在尋找字符串'不彈跳'出現查詢運行的一天,當我知道其實沒有反彈發生。當前運行的結果是完全空白的。

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

你需要什麼樣的結果?你想要0或NULL的顯示 – Santhosh

+0

嗨Santhosh,請參閱我上面的編輯。 – user448948

+0

請參閱下面的答案。 – Santhosh

回答

1

從我的理解,你需要值爲0或NULLS也Subscriberkeys顯示在你的結果,你也已經表示,它可能沒有在註冊表中的記錄。正如你自己所說,在這種情況下,最好的選擇是左加入,而不是內部加入

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 
+0

嗨Santhosh,我重新運行它,但是當else語句應該執行時它仍然回到空白。我也嘗試用0代替'not null'子句,問題依然存在。 – user448948

+0

你有沒有0或NULL存在你的數據,你檢查過嗎?如果是五個樣本記錄,則列出CASE的結果並帶有SUBSCRIBERKEY值 – Santhosh

+0

嗨Santhosh,沒有任何0或NULL。例如,我在一天內運行查詢,我知道沒有反彈的電子郵件。如果我運行一個簡單的查詢來返回SubscriberKeys,我不會得到任何結果。當我對這個值進行計數時,它是0,並且應該觸發我的else語句。 – user448948