我根据用户和当天的时间分组 统计出
成功短信的条数,失败短信的条数,已经未回的短信条数,
REPORT_STAT字段等于DELIVRD代表成功,反之不等于DELIVRD就代表失败,等于NULL的代表未回短信
以及有一个字段Mobilie_Type是1代表移动号码,2代表联通号码,3代表短信号码
统计成功的短信条数中这3个号码的个数,也就是说成功移动号码数,成功联通号码数,成功电信号码数
谢谢大家.
------解决方案--------------------
SELECT userid,SUM(CASE WHEN REPORT_STAT='DELIVRD' THEN 1 ELSE 0 END) [成功条数],SUM(CASE WHEN REPORT_STAT<>'DELIVRD' THEN 1 ELSE 0 END)[失败条数] ,
SUM(CASE WHEN REPORT_STAT IS NULL THEN 1 ELSE 0 END)[未回短信条数],
SUM(CASE WHEN MOBILE_NO_TYPE =1 AND REPORT_STAT='DELIVRD' THEN 1 ELSE 0 END )[成功条数中的移动号码数],
SUM(CASE WHEN MOBILE_NO_TYPE =2 AND REPORT_STAT='DELIVRD' THEN 1 ELSE 0 END )[成功条数中的联通号码数],
SUM(CASE WHEN MOBILE_NO_TYPE =3 AND REPORT_STAT='DELIVRD' THEN 1 ELSE 0 END )[成功条数中的电信号码数]
FROM [SMS_MT]
GROUP BY userid
/*
userid 成功条数 失败条数 未回短信条数 成功条数中的移动号码数 成功条数中的联通号码数 成功条数中的电信号码数
-------------------- ----------- ----------- ----------- ----------- ----------- -----------
abc 4 0 0 4 0 0
admin 2 2 1 2 0 0
*/