高手呢,帮帮忙呀

解决方案 »

  1.   

    按最小月份,到最大月份,连续每三个月统计一次数据.
    例如:
    1-3
    2-4
    3-5
    ...然后查询购买次数大于30次的人员.
      

  2.   

    你这个连续三个月是不是每个月都要买,还是三个月中的总数?
      

  3.   

    三个月的总数,不要总数达到就OK
      

  4.   

    这样不行,如果是2-5呢?
    我的意思是拿到'结算日期'就从这个日期开始向前推进3个月,如果在这3个月内达到了30次级是我要的数据
      

  5.   

    DECLARE @t TABLE(ID INT IDENTITY(1,1),uid INT,d DATETIME)
    INSERT @t SELECT 1,'2008-1-1'
    UNION ALL SELECT 2,'2008-1-1'
    UNION ALL SELECT 3,'2008-1-1'
    UNION ALL SELECT 1,'2008-1-1'
    UNION ALL SELECT 2,'2008-2-2'
    UNION ALL SELECT 2,'2008-3-1'
    UNION ALL SELECT 1,'2008-4-1'
    UNION ALL SELECT 3,'2008-2-1'
    UNION ALL SELECT 3,'2008-9-1'--(1)因为数据的问题,所以将你的30次,我改为3次来测试,不想敲那么多数据
    --(2)不知道你的连续是什么意思,1,2,3三个月都有购买 ,且加起来超过3, 还是1,2,3三个月只要总超过3
    --(3)如果是只要总和超过3SELECT DISTINCT uid FROM @t a WHERE 
    (SELECT COUNT(*) FROM @t WHERE uid=a.uid AND CONVERT(VARCHAR(7),d,120) 
    BETWEEN CONVERT(VARCHAR(7),a.d,120) AND CONVERT(VARCHAR(7),DATEADD(mm,2,a.d),120)
    )>=3/*
    2
    结果表明,只有uid=2的人,才在3个月内购买 超过3次。
    */--(4) 如果你指的连续,即3个月内,每个月都买 过,且总次数超过3,那么参见下贴,重复的东西我就不写了http://topic.csdn.net/u/20080617/23/808db82e-1cfd-4c11-80e0-b067093e3722.html
      

  6.   

    不需要1,2,3都购买,只要连续3个月加起来超过30次级OK
     呵呵,谢谢你