免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2054 | 回复: 4
打印 上一主题 下一主题

求一个让人头痛的查询语句 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-02-21 12:04 |只看该作者 |倒序浏览
比如我现在的查询语句是
select m.zone||','||decode(m.zone, '010001', '河南省',
                                        '010002', '北京市',
                                        '010003', '上海市',
                                        '010004', '四川省',
                                        '010005', '开封市',
                                        '010006', '洛阳市',)||'               '||count(*))
from log_mail_operation e,email_users m
where e.datetime>to_date('20080220','yyyymmdd')
and e.datetime<to_date('20080221','yyyymmdd')
and e.username=m.username
and e.opt_cmd='webmail/mms_cmd'
and e.opt_args like 'SendMMS%'
and e.status='ok'
group by m.zone;
查询结果是:
010001,河南省               23
010002,北京市               4
010003,上海市               3

四川省,洛阳市和开封市由于没有发送彩信记录,所以没有查询结果。
请问各位高手能不能帮忙让查询结果变成如下形式。
010001,河南省               23
010002,北京市               4
010003,上海市               3
010004,四川省               0
010005,开封市               0
010006,洛阳市               0

小弟求教了,各位高手帮帮忙忙阿~

论坛徽章:
0
2 [报告]
发表于 2008-02-21 12:35 |只看该作者
自己顶一下啊

论坛徽章:
0
3 [报告]
发表于 2008-02-21 13:35 |只看该作者
把where 的条件,改为decode里的条件,count(*)用decode取代

论坛徽章:
0
4 [报告]
发表于 2008-02-21 14:29 |只看该作者
把条件里面是否发送彩信记录的判断去掉,然后排序后取结果的前6条

论坛徽章:
0
5 [报告]
发表于 2008-02-21 22:48 |只看该作者
SELECT      m.ZONE
         || ','
         || DECODE (m.ZONE,
                    '010001', '河南省',
                    '010002', '北京市',
                    '010003', '上海市',
                    '010004', '四川省',
                    '010005', '开封市',
                    '010006', '洛阳市',
                    '地球'
                   )
         || ' '
         || COUNT (tb.username)
    FROM (SELECT username
            FROM log_mail_operation e
           WHERE e.datetime > TO_DATE ('20080220', 'yyyymmdd')
             AND e.datetime < TO_DATE ('20080221', 'yyyymmdd')
             AND e.opt_cmd = 'webmail/mms_cmd'
             AND e.opt_args LIKE 'SendMMS%'
             AND e.status = 'ok') tb,
         email_users m
   WHERE m.username = tb.username(+)
GROUP BY m.ZONE;

SQL效率未考虑。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP