在时间段内统计问题。姓名       服务对象  日期张三丰     李小姐    2003-3-1 
张三丰     吴娜      2003-3-2 
郑浩南     关芝林    2003-3-4 
       
如何统计在限定的日期时间段内 张三丰  出现的次数?查询的时候不允许直接用 张三丰来查寻,因为姓名也是动态增加的。如和统计列出所有姓名而不重复?如张三丰 从2003-3-1 到 2003-3-4  重复出现了2次。
如张三丰 从2003-3-2 到 2003-3-4  重复出现了1次。望各位高手 再帮忙。
Set rstEmployees = New ADODB.Recordset
   rstEmployees.CursorLocation = adUseClient
   rstEmployees.CursorType = adOpenKeyset
   rstEmployees.LockType = adLockOptimistic 
   
   rstEmployees.Open "select 姓名,count(*) as 重复次数 from 表1 group by 姓名", dbConnectionString, , , adCmdTable

解决方案 »

  1.   

    rstEmployees.Open "select 姓名,count(*) as 重复次数 from 表1 
    Where 日期字段 between 日期1 And 日期2 
    group by 姓名", dbConnectionString, , , adCmdTable
      

  2.   

    rstEmployees.Open "select 姓名,count(*) as 重复次数 from 表1 group by 姓名", dbConnectionString, , , adCmdTable你这句话中有一个明显的错误,那就是使用了SQL语句来查询的话,你最后一个参数就应该是adcmdtext(默认)而不是adcmdtable,其次你的SQL语句中,如果你所查询的是“姓名”字段的话,那你可以用下列SELECT语句:
    strSQL="Select 姓名,Count(*) As 重复次数 From 表1 Where 姓名='" & 查询姓名的变量 & "'"
    rstEmployees.Open strSQL,cn, 1,3,1,adCmdText
      

  3.   

    不好意思﹐頂錯了
    rstEmployees.Open "select 姓名,count(*) as 重复次数 from 表1 
    Where 日期字段 between 日期1 And 日期2 
    group by 姓名", dbConnectionString, , , adCmdText但是如果限制了姓名的話﹐每次的查詢只能查一個的記錄﹐是樓主想要的答案嗎?
      

  4.   

    : WangPengAn
    根据你的语句,查出的记录为 0
      

  5.   

    Set rstEmployees = New ADODB.Recordset
       rstEmployees.CursorLocation = adUseClient
       rstEmployees.CursorType = adOpenKeyset
       rstEmployees.LockType = adLockOptimistic 
       
       rstEmployees.Open "select 姓名,count(*) as 重复次数 from 表1 group by 姓名", dbConnectionString, , , adCmdTextIf rstEmployees.Fields.Count = 0 Then Exit Sub   
          Do While Not rstEmployees.EOF
           For i = 0 To rstEmployees.RecordCount - 1
           
           MsgBox rstEmployees.Fields("姓名").Value & rstEmployees("重复次数")       rstEmployees.MoveNext       
           Next i
          Loop
      

  6.   

    試一下用大于和小于的條件來進行一下查詢rstEmployees.Open "select 姓名,count(*) as 重复次数 from 表1 
    Where 日期字段>=日期1 And 日期字段<=日期2
    group by 姓名", dbConnectionString, , , adCmdText如果再不行的話﹐看一下你的查詢條件是否正確﹐參數是否變一下﹐再查
      

  7.   

    david1981:
    你的方法和我的一样,现在主要问题是如何在限定的时间段内进行统计。
      

  8.   

    rstEmployees.Open "select 姓名,count(姓名) as 重复次数 from 表1 
    Where 日期字段 between 日期1 And 日期2 
    group by 姓名", dbConnectionString, , , adCmdText
      

  9.   

    倒~
    stEmployees.Fields.Count还是为0是不是先在时间段内生成一个表,然后再在生成表里进行统计呢?
    这又怎么实现?
      

  10.   

    姓名       服务对象  日期张三丰     李小姐    2003-3-1 
    张三丰     吴娜      2003-3-2 
    郑浩南     关芝林    2003-3-4 
    试试这个:
    select 姓名,count(姓名) as FCount,datedepart(date,日期) from 表1 group by 姓名,datedepart(date,日期)
      

  11.   

    "select 姓名,count(姓名) as 重复次数 from 表1 
    Where 日期字段 between " & "'" & "#" & 日期1 & "#" & "'"  And "'" & "#" & 日期2 & "#" & "'" 在形成sql时的语句是这个样子的
    select* from tblbooklog where awake_time between #2002-01-01 00:00:00# and #2003-12-12 00:00:00#以上是在access中能成功运行的
    而且你的数据库中如果只有日期没有时间则在日期1和日期2中就必须只有日期没有时间
    如果数据库中包含了时间,而你要比较的是日期,那么就要把数据库中的时间中的日期取出来再比较在oracle中就不能这样写
    要将时间型转换成oracle能识别的格式
    用format或者to_date()
      

  12.   

    日期最好用Format(日期﹐"yyyy/m/d") 格式化一下
      

  13.   

    搞定, WangPengAn的查询语句正确,只是我没弄好查询的日期格式,后面的朋友补充的 好。