CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

高分跪求一SQL查询语句,急急急

楼主xiaobifei(小菲)2006-03-05 13:50:18 在 MS-SQL Server / 基础类 提问

我有一个表main内容如下  
  date                                     name                     total      
  2006-03-01   07:20:00         adn                       20  
  2006-03-01   07:25:00         adf                       40  
  2006-03-01   09:20:00         df                         20  
  2006-03-02   07:20:00         dfsd                     10  
  2006-03-02   05:20:00         df                         2.3  
  2006-03-01   05:20:00         dsf                       2.4  
  2006-03-03   07:20:00         sdf                       2.64  
  我想统计2006-03-01到2006-03-03这三天每天的记录数怎么弄,并把每天的都汇总显示  
  我的查询语句为  
  select   count(date)   from   main   date>=2006-03-01   00:00:00   date<=2006-03-03   23:29:29   group   by   date  
  汇总出为的数据为  
  1  
  1  
  1  
  1  
  1  
  1  
  了可我想的是把每天的记录数分别汇总,按照我的要求应该为  
  4  
  2  
  1  
   
  请问该怎么写代码啊  
   
   
   
   
   
   
   
  问题点数:100、回复次数:17Top

1 楼lsqkeke(可可)回复于 2006-03-05 13:52:57 得分 100

select   count(date)   from   main    
  where   date>=2006-03-01   00:00:00   date<=2006-03-03   23:29:29    
  group   by   convert(varchar(10),date,120)Top

2 楼lsqkeke(可可)回复于 2006-03-05 13:58:41 得分 0

declare   @t   table([date]   datetime,[name]   varchar(20),   total   float)      
  insert   @T  
  select   '2006-03-01   07:20:00',         'adn',       20     union   all  
  select   '2006-03-01   07:25:00',         'adf',       40   union   all  
  select   '2006-03-01   09:20:00',         'df',     20   union   all  
  select   '2006-03-02   07:20:00',         'dfsd',   10   union   all  
  select   '2006-03-02   05:20:00',         'df',   2.3   union   all  
  select   '2006-03-01   05:20:00',         'dsf',       2.4   union   all  
  select   '2006-03-03   07:20:00',         'sdf',       2.64  
   
  select   count(1)   from   @t   a    
  where   [date]>='2006-03-01   00:00:00'   and   [date]<='2006-03-03   23:29:29'    
  group   by   convert(varchar(10),[date],120)  
   
  结果:  
  4  
  2  
  1Top

3 楼xiaobifei(小菲)回复于 2006-03-05 14:00:45 得分 0

可可大哥,你能不能解释一下你写的这二条语句啊,我给你下跪了Top

4 楼yyjzsl(阿木)回复于 2006-03-05 14:12:21 得分 0

^_^,没那么严重吧?  
  偶也没看懂,只能帮顶下哦。Top

5 楼lsqkeke(可可)回复于 2006-03-05 14:22:44 得分 0

你不用那么客气的     :)  
   
  我后面那条才是正确的!  
  你把它拿到查询分析器里面运行就可以看到结果了!  
   
  此语句中主要是后面的那个group   by   子句!  
  由于你是要求按照一天统计,就必须截取时间字符串的前面的年   月日    
  而不包括时分秒的时间信息。要达到这个目的,并且统一年月日时间的格式,  
  就用到了convert(varchar(10),date,120)这个函数。  
  你可以查看联机帮助得到它的用法  
  Top

6 楼limaowa()回复于 2006-03-05 15:18:11 得分 0

我给你点解释:  
      你原来的语句用group   by   date  
  自然是   把date当成主健,所以结果显示的是每一行的个数,但经过了   convert(varchar(10),[date],120)  
  这条转换语句之后,你的分组条件改变了,原来具体道秒的时间改变成的   具体到日的时间,即以天为标准分组,而着才是你所希望的查询条件,  
      明白了吗   ?  
      具体的   convert(varchar(10),[date],120)  
  语句你可以在帮助文档   里查下,搜索   convert就出来了,它在这里就是揭短了   日期长度,明白了   吗   ?  
  Top

7 楼limaowa()回复于 2006-03-05 15:20:18 得分 0

发的晚了    
      页面没有刷新  
        希望对你有帮助哦Top

8 楼aniude(重返荣耀)回复于 2006-03-05 16:50:41 得分 0

学习Top

9 楼filebat(Mark)回复于 2006-03-05 19:05:35 得分 0

楼主,你又发了一次哦  
  http://community.csdn.net/Expert/topic/4593/4593689.xml?temp=.6219599Top

10 楼flashspider(还没想好)回复于 2006-03-05 23:02:50 得分 0

第一句也对的吧,除了日期没有用'',select   count(1)与   select   count(date)对此题结果有什么影响吗?请教,学习中......Top

11 楼xiaoxiangqing(肖祥清)回复于 2006-03-06 08:58:36 得分 0

select   convert(varchar(10),date,120),count(*)   cnt   from   main   date>='2006-03-01   00:00:00'   date<='2006-03-03   23:29:29'   group   by   convert(varchar(10),date,120)Top

12 楼xiaoxiangqing(肖祥清)回复于 2006-03-06 09:02:23 得分 0

--方法一:  
  select   convert(varchar(10),记录日期,120)date,count(*)   cnt   from   stock_back   group   by   convert(varchar(10),记录日期,120)  
   
  --方法二:  
  select   datepart(yyyy,记录日期)year,datepart(mm,记录日期)month,datepart(dd,记录日期)day,count(*)   cnt   from   stock_back   group   by   datepart(yyyy,记录日期),datepart(mm,记录日期),datepart(dd,记录日期)  
  Top

13 楼mislrb(上班看看早报,上上CSDN,下班看看电影)回复于 2006-03-06 09:08:25 得分 0

思路应该是:  
  要统计每天的,先将日期转换成年月日不要时间的格式,再countTop

14 楼heyihua()回复于 2006-03-06 11:21:51 得分 0

select   count(DATEDIFF(d,   date,   GETDATE())   ),DATEDIFF(d,   date,   GETDATE())     from   main   group   by   DATEDIFF(d,   date,   GETDATE())   where   date>=2006-03-01   00:00:00   date<=2006-03-03   23:29:29Top

15 楼xxljd(闪)回复于 2006-03-06 11:37:11 得分 0

select     day(date),count(1)   from   表  
  where   date>'2006-03-01'   and   date<'2006-03-04'  
  group   by   day(date)Top

16 楼xxljd(闪)回复于 2006-03-06 11:40:06 得分 0

建立测试  
  declare   @t   table([date]   datetime,[name]   varchar(20),   total   float)      
  insert   @T  
  select   '2006-03-01   07:20:00',         'adn',       20     union   all  
  select   '2006-03-01   07:25:00',         'adf',       40   union   all  
  select   '2006-03-01   09:20:00',         'df',     20   union   all  
  select   '2006-03-02   07:20:00',         'dfsd',   10   union   all  
  select   '2006-03-02   05:20:00',         'df',   2.3   union   all  
  select   '2006-03-01   05:20:00',         'dsf',       2.4   union   all  
  select   '2006-03-03   07:20:00',         'sdf',       2.64  
  执行  
   
  select     day(date)as'日期',count(1)   from   @t  
  where   date>'2006-03-01'   and   date<'2006-03-04'  
  group   by   day(date)  
   
   
   
  Top

17 楼aywrenyue(基本功修炼中……)回复于 2006-03-06 15:45:04 得分 0

学习Top

相关问题

  • 求一条查询的SQL语句,急急急急急急
  • 急! ! 急 ! ! 急! ! 急 ! !  一简单SQL语句查询!
  • sql查询语句问题?急!急!急!在线求救
  • 高分跪求一SQL查询语句,急急急
  • 高分跪求一SQL查询语句,急急急
  • sql语句 急急
  • 急急,sql语句!
  • SQL查询语句
  • Sql 查询语句
  • SQL查询语句

关键词

  • 语句
  • date
  • df
  • main

得分解答快速导航

  • 帖主:xiaobifei
  • lsqkeke

相关链接

  • SQL Server类图书

广告也精彩

反馈

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