如有
tab
ID  Date
1   2008-1-1
2   2008-1-1
3   2008-1-3
..
100 2008-8-9
---------------------
要求得出从一个时间到下一个时间为一个月的时间段记录最多的数据

2008-1-1 到 2008-1-31 有100条记录
2008-1-2 到 2008-2-1  有110条记录
那么就是取得208-1-2 - 2008-2-1日这个时间段

解决方案 »

  1.   

    select rtrim(year(date))+'-'+rtrim(month(date)),count(*) from tab group by rtrim(year(date))+'-'+rtrim(month(date))
      

  2.   

    select top 1 year(Date) as 年,month(Date) as 月,count(*) as 数据量 from Tab group by year(Date),month(Date) order by count(*) desc
      

  3.   

    declare @tab table (ID int,Date datetime) 
    insert @tab select 1,  '2008-1-1' 
    insert @tab select 2,  '2008-1-1' 
    insert @tab select 3,  '2008-1-3' 
    insert @tab select 4,  '2008-2-1'
    insert @tab select 5,  '2008-2-3'
    insert @tab select 3,  '2008-2-5'
    insert @tab select 3,  '2008-3-3'
    select count(*)amount,convert(varchar(7),date,120)[date] from @tab group by convert(varchar(7),date,120)
      

  4.   

    select convert(varchar(4),a.年)+'-'+convert(varchar(2),a.月)+'-01' as 起始,dateadd(day,-1,dateadd(month,1,convert(datetime,convert(varchar(4),a.年)+'-'+convert(varchar(2),a.月)+'-01'))) as 截止  
    from 
    (
    SQL codeselect top 1 year(Date) as 年,month(Date) as 月,count(*) as 数据量 from Tab group by year(Date),month(Date) order by count(*) desc
    ) a
      

  5.   

    select 
    rtrim(year(ReqDate))+'-'+rtrim(month(ReqDate)) MONTH,
    count(*) COUNT
    from
    DBHTSystem..TMP_WRKSECONDARYINSP
    group by
    rtrim(year(ReqDate))+'-'+rtrim(month(ReqDate))
    order by
    rtrim(year(ReqDate))+'-'+rtrim(month(ReqDate))MONTH                     COUNT       
    ------------------------- ----------- 
    2008-4                    175
    2008-5                    132
    2008-7                    2引自:完美行动
      

  6.   

    select top 1
    rtrim(year(ReqDate))+'-'+rtrim(month(ReqDate)) MONTH,
    count(*) COUNT
    from
    DBHTSystem..TMP_WRKSECONDARYINSP
    group by
    rtrim(year(ReqDate))+'-'+rtrim(month(ReqDate))
    order by
    COUNT descMONTH                     COUNT       
    ------------------------- ----------- 
    2008-4                    175
      

  7.   

    RE:
    select 
        rtrim(year(ReqDate))+'-'+rtrim(month(ReqDate)) MONTH,
        count(*) COUNT
    from
        DBHTSystem..TMP_WRKSECONDARYINSP
    group by
        rtrim(year(ReqDate))+'-'+rtrim(month(ReqDate))
    order by
        rtrim(year(ReqDate))+'-'+rtrim(month(ReqDate))
    -----------------------------------------------------------
    这样只是计算出月份的数据我现在要查询的是:

    查询出某个个月时间段(也就相当于哪个30天)记录最多的时间段
    他不是以yyyy-MM-1  -> yyyy-(MM+1)-1.AddDay(-1)的形式
    而是某一天到他的下个月的这一天 谢谢
      

  8.   

    如果中间没有断天记录,用循环就可以了
    select @sum=sum(1)  where id>@i and id<@i+30;
    然后再加个变量@tmp存储每次存储的@sum值,进行每次的比较
      

  9.   

    如果有断天记录,也不难,where语句修改一下,写个时间段区间,具体函数忘了。
      

  10.   

    对,DateAdd函数加30(循环用起始天后移来算),可惜俺的手生,不过思路绝对正确。