[SQL ] 有條件順序的case when寫法

作者: giveadamn (nein)   2019-11-04 11:10:35
資料庫名稱:SQL
資料庫版本:11
內容/問題描述:
各位板友好
我有一個Case When的順序問題,想請教大家
現在我有一個通話紀錄的TABLE,裡面會用到3個欄位
1.撥出時間
2.撥出號碼
3.撥出結果
其中,
1.撥出結果有很多的代號,總共分為3類
有十幾種代號,會被歸類為有效電話,有十幾種代號,會被歸類為無效電話
有一個代號,會被歸類為無人接聽
2.若只有電話號碼,沒有撥出時間也沒有撥出結果,表示尚未撥打
一個電話號碼,可能會被撥打0~N次,若顯示為無效電話,就不會再繼續撥打了
但若為有效電話,則會繼續撥打,撥打的結果也有可能是有效或無人接聽
例如
case 1
2019/10/1 0912345678 無人接聽
2019/10/1 0912345678 無人接聽
2019/10/1 0912345678 有效電話的代碼
2019/10/1 0912345678 無人接聽
case 2
2019/10/1 0987654321 無人接聽
2019/10/1 0987654321 無人接聽
2019/10/1 0987654321 無效電話的代碼
case 3
2019/10/1 0988888888 無人接聽
2019/10/1 0988888888 無人接聽
我想要有一個欄位來判斷,
若同一支號碼,只有撥打結果有過"有效",不管之後又打了多少通無人接聽,都算有效
若同一支號碼,只有撥打結果有過"無效",就算無效
若同一支號碼,全部的撥打結果只有無人接聽,才顯示為無人接聽
若同一支號碼,從未撥打過,則顯示尚未撥打
我現在用case when來寫
我只能寫
case when 撥出結果 in(oo,ox,xx,xu) then '有效'
case when 撥出結果 in(yy,ymy,yz,zz) then '無效'
end
不能再加case when 撥出結果 in(kk) then '無人接聽'
一加這一欄,很多應該是有效的電話,就會被歸類到無人接聽
請問,這樣的情況
我該怎麼寫呢?
先謝謝各位板友,謝謝

Links booklink

Contact Us: admin [ a t ] ucptt.com