CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  应用实例

新年好,数据区间查询问题 在线等

楼主gmhis(Huery)2005-01-01 22:14:32 在 MS-SQL Server / 应用实例 提问

在对一个视图进行处理时,发现了难题  
  比如表如下  
  工厂     数量       交易时间  
  A           50           2004-05-07   12:55:00  
  A           40           2004-05-08   12:55:00  
  B           30           2004-05-10   12:55:00      
  B           60           2004-05-11   12:55:00  
  B           30           2004-05-12   12:55:00    
   
  现需以交易时间设置区间(比如2天),GROUP   BY   工厂,Sum(数量)的话,  
  得到如下  
  工厂     数量       交易时间  
  A           90           2004-05-07  
  B           90           2004-05-10      
  B           30           2004-05-12  
   
  同理,如果设置为3天,则为  
  工厂     数量       交易时间  
  A           90           2004-05-07  
  B           120         2004-05-10  
   
  怎么才能够实现呢?在线等,急啊,明早就要用了. 问题点数:0、回复次数:7Top

1 楼syjeffdyg(阿谷)回复于 2005-01-01 22:53:02 得分 0

select   工厂,sum(数量),交易时间   from   database  
    group   by   工厂    
      having   交易时间   between   交易时间   and   交易时间+1Top

2 楼syjeffdyg(阿谷)回复于 2005-01-01 22:56:31 得分 0

不知道对否?请指正,当然,也可以这样试验一下:  
   
  select   工厂   x,sum(数量),交易时间   from   database  
    group   by   工厂    
      having   交易时间+1   in   select   交易时间   where   工厂=x.工厂  
  欢迎大家讨论Top

3 楼zengzhengliang(啊牛)回复于 2005-01-02 21:28:51 得分 0

select     工厂,sum(数量)   数量    
  from   a   group   by   工厂   having   count(工厂)<=3Top

4 楼gmhis(Huery)回复于 2005-01-02 22:03:47 得分 0

谢谢阿谷,阿牛,可我要的不是这样的啊  
  区间是要求可以随意设置的,比如,1天,3天,或者1个月,那我就得把这个区间里面的数量进行汇总,搞不定啊Top

5 楼guid6(学无止境)回复于 2005-01-02 22:46:03 得分 0

能不能直接给定日期汇总  
  DECLARE   @KSRQ   NVARCHAR(10),@JSRQ   NVARCHAR(10)  
  select   工厂   x,sum(数量),交易时间   from   database   WHERE   CONVERT(CHAR(10),交易时间,20)>=@KSRQ   AND   CONVERT(CHAR(10),交易时间,20)<=@JSRQ   group   by   工厂Top

6 楼ReViSion(和尚)回复于 2005-01-02 23:41:57 得分 0

--我在网吧写的可能有些关键字有误  
  select   identity(int,1),B.*     into   a   From   TableName   B  
  order   by   工厂,交易日期  
   
  Declare   @Counts   int  
  Declare   @NowDate   datetime  
  Declare   @intcounts   int  
   
  select   @counts=count(*)   From   a  
  select   @intcounts=1  
   
  再一条条取,把在同一区间的日期改为最前一个时间  
   
  明白给你程序  
  Top

7 楼ReViSion(和尚)回复于 2005-01-03 18:04:54 得分 0

Declare   @company   varchar(20)  
  declare   @date   datetime  
   
  select   *   into   a   from   TableName  
  Select   @company=min(工厂)   from   a  
   
  while   @company   is   not   null  
      begin  
                Select   @date=min(交易日期)   from   a   where   工厂=@company  
                while   @date   is   not   null  
                        begin  
                                  update   a   set   a.交易日期=@date   where   a.工厂=@company  
                                  and   a.交易日期<=@date+@days                                                 --@days为区间天数  
                                   
                                  select   @date=min(交易日期)   from   a   where   工厂=@company  
                                  and   交易日期>@date  
                        end  
     
                                  select   @company=min(工厂)   from   a   where   工厂>@company  
      end  
   
  select   工厂,sum(数量),交易日期   from   a   group   by   工厂,交易日期  
   
  你试试吧,行的  
  Top

相关问题

  • 数据查询---在线等
  • 数据库查询!在线!
  • 在线求助:数据库的查询
  • 数据库多线程查询
  • 数据库多线程查询
  • 数据查询
  • 数据查询
  • 数据查询
  • 数据查询
  • 数据查询(vb)

关键词

  • 工厂
  • 数量
  • 交易时间
  • sum
  • group
  • select

得分解答快速导航

  • 帖主:gmhis

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo