12
返回列表 发新帖
楼主: lyoffice

如何统计指定时间段内数据!

[复制链接]
论坛徽章:
0
11#
发表于 2004-3-18 12:30 | 只看该作者
select
(select sum(销售数量) from table group by 工厂,日期 having 日期
between 'xxxxxxxx' and 'xxxxxxxx'   ) as b,
(select sum(销售数量) from table group by 工厂,日期 having 日期
between 'xxxxxxxx' and 'xxxxxxxx'   ) as c,
(select sum(销售数量) from table group by 工厂,日期 having 日期
between 'xxxxxxxx' and 'xxxxxxxx'   ) as d,
from  table  where 工厂='xxxxxxxxxx'
union
select
(select sum(销售数量) from table group by 工厂,日期 having 日期
between 'xxxxxxxx' and 'xxxxxxxx'   ) as b,
(select sum(销售数量) from table group by 工厂,日期 having 日期
between 'xxxxxxxx' and 'xxxxxxxx'   ) as c,
(select sum(销售数量) from table group by 工厂,日期 having 日期
between 'xxxxxxxx' and 'xxxxxxxx'   ) as d,
from  table  where 工厂='xxxxxxxxxx'

我没试,你实验看看,日期转换一下汇总到   日  .
慢了点~~~~~~~~~~~~~~~~~

使用道具 举报

回复
论坛徽章:
0
12#
发表于 2004-3-18 13:13 | 只看该作者

哦~~~~

不用union 去掉 where 工厂='xxxxxxxxxxx'
好象可以

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
13#
发表于 2004-3-18 21:24 | 只看该作者
select  b.GC_ID,b.Term
                b.Amount as [1-5号],
                c.Amount as [6-10号],
                c.Amount as [11-15号],
                e.Amount as [16-20号],
                f.Amount as [21-25号],
                g.Amount as [26-31号],
                h.Amount as [月汇总]
From
        (select GC_ID,DateAdd(Day,1-Day(Date),Date) as Term,sum(Amount) as Amount from table
                        Where Datediff(day,dateadd(day,1-day(Date),Date),date)>=0
                                and Datediff(day,dateadd(day,1-day(Date),Date),date)<=5
                        Group by GC_ID,DateAdd(Day,1-Day(Date),Date) as Term) b,
        (select GC_ID,DateAdd(Day,1-Day(Date),Date) as Term,sum(Amount) as Amount from table
                        Where Datediff(day,dateadd(day,1-day(Date),Date),date)>=6
                                and Datediff(day,dateadd(day,1-day(Date),Date),date)<=10
                        Group by GC_ID,DateAdd(Day,1-Day(Date),Date) as Term) c,
        (select GC_ID,DateAdd(Day,1-Day(Date),Date) as Term,sum(Amount) as Amount from table
                        Where Datediff(day,dateadd(day,1-day(Date),Date),date)>=11
                                and Datediff(day,dateadd(day,1-day(Date),Date),date)<=15
                        Group by GC_ID,DateAdd(Day,1-Day(Date),Date) as Term) d,
        (select GC_ID,DateAdd(Day,1-Day(Date),Date) as Term,sum(Amount) as Amount from table
                        Where Datediff(day,dateadd(day,1-day(Date),Date),date)>=16
                                and Datediff(day,dateadd(day,1-day(Date),Date),date)<=20
                        Group by GC_ID,DateAdd(Day,1-Day(Date),Date) as Term) e,
        (select GC_ID,DateAdd(Day,1-Day(Date),Date) as Term,sum(Amount) as Amount from table
                        Where Datediff(day,dateadd(day,1-day(Date),Date),date)>=21
                                and Datediff(day,dateadd(day,1-day(Date),Date),date)<=25
                        Group by GC_ID,DateAdd(Day,1-Day(Date),Date) as Term) f,
        (select GC_ID,DateAdd(Day,1-Day(Date),Date) as Term,sum(Amount) as Amount from table
                        Where Datediff(day,dateadd(day,1-day(Date),Date),date)>=26
                                and Datediff(day,dateadd(day,1-day(Date),Date),date)<=31
                        Group by GC_ID,DateAdd(Day,1-Day(Date),Date) as Term) g,
        (select GC_ID,DateAdd(Day,1-Day(Date),Date) as Term,sum(Amount) as Amount from table
                        Where Datediff(day,dateadd(day,1-day(Date),Date),date)>=0
                                and Datediff(day,dateadd(day,1-day(Date),Date),date)<=31
                        Group by GC_ID,DateAdd(Day,1-Day(Date),Date) as Term) h
Where b.GC_ID=c.GC_ID
        and b.GC_ID=d.GC_ID
        and b.GC_ID=e.GC_ID
        and b.GC_ID=f.GC_ID
        and b.GC_ID=g.GC_ID
        and b.GC_ID=g.GC_ID
        and b.Term=c.Term
        and b.Term=d.Term
        and b.Term=e.Term
        and b.Term=f.Term
        and b.Term=g.Term
        and b.Term=h.Term

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
14#
发表于 2004-3-18 21:29 | 只看该作者
上句有错误,更正如下

select  b.GC_ID,b.Term
        b.Amount as [1-5号],
        c.Amount as [6-10号],
        c.Amount as [11-15号],
        e.Amount as [16-20号],
        f.Amount as [21-25号],
        g.Amount as [26-31号],
        h.Amount as [月汇总]
From
    (select GC_ID,DateAdd(Day,1-Day(Date),Date) as Term,sum(Amount) as Amount from table
            Where Datediff(day,dateadd(day,1-day(Date),Date),date)>=0
                and Datediff(day,dateadd(day,1-day(Date),Date),date)<=5
            Group by GC_ID,DateAdd(Day,1-Day(Date),Date))b,
    (select GC_ID,DateAdd(Day,1-Day(Date),Date) as Term,sum(Amount) as Amount from table
            Where Datediff(day,dateadd(day,1-day(Date),Date),date)>=6
                and Datediff(day,dateadd(day,1-day(Date),Date),date)<=10
            Group by GC_ID,DateAdd(Day,1-Day(Date),Date))c,
    (select GC_ID,DateAdd(Day,1-Day(Date),Date) as Term,sum(Amount) as Amount from table
            Where Datediff(day,dateadd(day,1-day(Date),Date),date)>=11
                and Datediff(day,dateadd(day,1-day(Date),Date),date)<=15
            Group by GC_ID,DateAdd(Day,1-Day(Date),Date))d,
    (select GC_ID,DateAdd(Day,1-Day(Date),Date) as Term,sum(Amount) as Amount from table
            Where Datediff(day,dateadd(day,1-day(Date),Date),date)>=16
                and Datediff(day,dateadd(day,1-day(Date),Date),date)<=20
            Group by GC_ID,DateAdd(Day,1-Day(Date),Date))e,
    (select GC_ID,DateAdd(Day,1-Day(Date),Date) as Term,sum(Amount) as Amount from table
            Where Datediff(day,dateadd(day,1-day(Date),Date),date)>=21
                and Datediff(day,dateadd(day,1-day(Date),Date),date)<=25
            Group by GC_ID,DateAdd(Day,1-Day(Date),Date))f,
    (select GC_ID,DateAdd(Day,1-Day(Date),Date) as Term,sum(Amount) as Amount from table
            Where Datediff(day,dateadd(day,1-day(Date),Date),date)>=26
                and Datediff(day,dateadd(day,1-day(Date),Date),date)<=31
            Group by GC_ID,DateAdd(Day,1-Day(Date),Date))g,
    (select GC_ID,DateAdd(Day,1-Day(Date),Date) as Term,sum(Amount) as Amount from table
            Where Datediff(day,dateadd(day,1-day(Date),Date),date)>=0
                and Datediff(day,dateadd(day,1-day(Date),Date),date)<=31
            Group by GC_ID,DateAdd(Day,1-Day(Date),Date))h
Where b.GC_ID=c.GC_ID
    and b.GC_ID=d.GC_ID
    and b.GC_ID=e.GC_ID
    and b.GC_ID=f.GC_ID
    and b.GC_ID=g.GC_ID
    and b.GC_ID=g.GC_ID
    and b.Term=c.Term
    and b.Term=d.Term
    and b.Term=e.Term
    and b.Term=f.Term
    and b.Term=g.Term
    and b.Term=h.Term

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表