首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 关于合计GROUP BY的一个复杂问题,谢谢各位高手 [已结贴,结贴人:duhouqi2]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-14 01:56:02 楼主
    关于多表GROUP BY的问题
    两个表  A,B
    A表字段    A.ID    A.datetime
    b表字段    B.bid  B.datemonth

    A表和b表的时间是无关的,我需要用一句SQL统计出以下结果


              A所有记录总数        B表的记录数
    一月
    二月
    .
    .
    .
    .
    .
    十一月
    十二月

    分送完,多谢指导!
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dawugui
    • 等级:
    发表于:2008-07-14 02:12:241楼 得分:5
    SQL code
    select isnull(m.yue , n.yue) yue , m.cnta [A所有记录总数] , n.cntb [B所有记录总数] from ( select month([datetime]) yue, count(*) cnta from A group by month([datetime]) ) m full join ( select month([datemonth]) yue, count(*) cntb from B group by month([datemonth]) ) n on m.yue = n.yue
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-14 02:21:572楼 得分:15
    SQL code
    SELECT MON.month, A所有记录总数 = A.cnt, B表的记录数 = B.cnt FROM( SELECT month = N'一月', months = 1 UNION ALL SELECT month = N'二月', months = 2 UNION ALL SELECT month = N'三月', months = 3 UNION ALL SELECT month = N'四月', months = 4 UNION ALL SELECT month = N'五月', months = 5 UNION ALL SELECT month = N'六月', months = 6 UNION ALL SELECT month = N'七月', months = 7 UNION ALL SELECT month = N'八月', months = 8 UNION ALL SELECT month = N'九月', months = 9 UNION ALL SELECT month = N'十月', months = 10 UNION ALL SELECT month = N'十一月', months = 11 UNION ALL SELECT month = N'十二月', months = 12 )MON LEFT JOIN( SELECT months = DATEPART(Month, datetime), cnt = COUNT(*) FROM A GROUP BY DATEPART(Month, datetime) )A ON MON.months = A.months LEFT JOIN( SELECT months = datemonth, cnt = COUNT(*) FROM B GROUP BY datemonth )B ON MON.months = B.months
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-14 02:39:373楼 得分:0
    zjcxc 兄弟的成拉~不过需要稍微改下,就是统计的A所有记录总数 并不是按A的时间的月份,而是A的时间段,比如A的时间小于某时间
    我的意思是,比如一月统计的是A表一月以前注册的用户
    二月统计的是A表二月以前注册的用户,以次类推,多谢!~

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-14 02:59:074楼 得分:0
    我更正下我的意图,谢谢
    A表中的时间代表用户注册时间

    需要统计A表当月注册总数,比如一月的A总数不应该包括一月后注册的人数

    B表是正确的,B表代表A表中用户发布的信息,B表的时间是发信息的时间.统计的是他那一个月发的信息总量
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved