【发布时间】:2020-05-27 10:10:01
【问题描述】:
我正在开发 SMS-Gateway,它拥有多个不同号码的收费 SMS-服务,
每条发送给客户的短信都有以下 4 种状态(已转发、已送达、已过期、送达失败)
现在我有以下充电系统的 first_table 以及以下详细信息(TABLE-A)
及以下 (TABLE-B) 包含每条已发送 SMS 的状态及其 ID
以下是我预期的最终结果,用于预测每个短信服务的详细信息:
起初我认为这很简单,我只需要使用COUNT(Case when ...)
但就我而言,我有数千个短信号码(服务),所以如果我使用这种方法,它会是这样的:-
COUNT(CASE WHEN a.SMS_SHORT_CODE='1111' AND B.STATUS='forwarded' )
COUNT(CASE WHEN a.SMS_SHORT_CODE='1111' AND B.STATUS='delivered' )
COUNT(CASE WHEN a.SMS_SHORT_CODE='1111' AND B.STATUS='expired' )
COUNT(CASE WHEN a.SMS_SHORT_CODE='1111' AND B.STATUS='delivery failed' )
COUNT(CASE WHEN a.SMS_SHORT_CODE='5000' AND B.STATUS='forwarded' )
COUNT(CASE WHEN a.SMS_SHORT_CODE='5000' AND B.STATUS='delivered' )
COUNT(CASE WHEN a.SMS_SHORT_CODE='5000' AND B.STATUS='expired' )
COUNT(CASE WHEN a.SMS_SHORT_CODE='5000' AND B.STATUS='delivery failed' )
...
...
...
...
...
...
...
当您有许多服务还注意到CASE 只能处理 250 个条件时,上述方法不实用?
那么,使用 SMS-ID 对(表 B)上的(表 A)执行left outer join 并计算每个 SMS 状态并进行如下预测的最佳方法是什么?
【问题讨论】: