select * from table where indate>起始时间 and indate<now()

解决方案 »

  1.   

    Select 时间段=Convert(varchar(7),Indate,102),
           在职人数=Sum(Case When State='1' Then 1 Else 0 End)
      From employee
     Where Indate>=起始时间参数
       and Indate<=GetDate()
      Group by Convert(varchar(7),Indate,102)
      Order by Convert(varchar(7),Indate,102)
    注意起始时间参数与Indate的格式,最好统一转换为字符串比较
      

  2.   

    Select 时间段=Convert(varchar(7),Indate,102),
           在职人数=Sum(Case When State='1' Then 1 Else 0 End)
      From employee
     Where Indate>=起始时间参数
       and Indate<=GetDate()
      Group by Convert(varchar(7),Indate,102)
      Order by Convert(varchar(7),Indate,102)
    注意起始时间参数与Indate的格式,最好统一转换为字符串比较
      

  3.   

    表中查询出来的是这样的原始数据。
    indate                                     state           
    ------------------------------------------------------ 
    2001-03-19 10:45:22.000                      1  
    2001-05-10 10:45:22.000                      0 
    2001-11-11 10:45:22.000                      1 
    2002-01-21 10:45:22.000                      1
    2002-04-25 10:45:22.000                      1  
    2002-06-08 10:45:22.000                      0
    2002-06-12 10:45:22.000                      1
    2002-06-15 10:45:22.000                      1
    2002-07-11 10:45:22.000                      1
    2002-07-12 10:45:22.000                      1
    2002-07-16 10:45:22.000                      1 
    要求是这样的结果集
    时间段(按月)                              在职人数           
    ------------------------------------------------------ 
    2001.03                                      1  
    2001.04                                      1
    2001.05                                      1 
    ...   
    2002.6                                       6 
    2002.7                                       9
      

  4.   

    select count(在职人数) from employee
    where 时间段>'起始时间'
      and 时间段<Now
     group by 时间段
      

  5.   

    to  qybao(阿宝) 
    谢谢你,我试了你的语句,可以查询出各个月的入职的人数,也就是说,你现在的语句查出来的是每个月的入职的人数,不是这个月的在职人数
    你的语句查询结果如下
    时间段     在职人数        
    ------- ----------- 
    2002.01     2
    2002.02     2
    2002.03     2
    2002.04     2
    2002.06     0
    2002.07     1
    现在要求的结果是下面这样的
    时间段     在职人数        
    ------- ----------- 
    2002.01     2
    2002.02     4
    2002.03     6
    2002.04     8
    2002.06     0
    2002.07     9也就是说要下个月的‘在职’人数 = 上月‘在职’人数 + 该月的‘入职’人数
      

  6.   

    qybao(阿宝) 说的好,我的有问题
      

  7.   

    Select substring(convert(char(10),Indate,102),1,7),
           Sum(case when State='1' then 1 else 0 end)
     from employee
     where Indate>=起始时间参数 and Indate<=GetDate()
    order by Indate
      

  8.   

    試一下這個:SELECT DISTINCT TO_CHAR(A.INDATE,'YYYY.MM'),B.EMP_COUNT
      FROM EMPLOYEE A,
            (SELECT COUNT(*) EMP_COUNT
               FROM  EMPLOYEE C
                  WHERE  TO_CHAR(C.INDATE,'YYYY.MM')
                        =TO_CHAR(A.INDATE,'YYYY.MM')
                   AND C.STATE='1'                
                     )  B
      WHERE  TO_CHAR(A.INDATE,'YYYY.MM')
                        >=TO_CHAR(PARAM_DATE,'YYYY.MM')
    PARAM_DATE  為用戶給的初始日期,
      

  9.   

    TO  _liangzi_() 
    你的结果与阿宝的结果一样的,求的都是入职人数, 不是在职人数
      

  10.   

    to imdt(睡不死不起床) :
    你好!
    你的to_char是个自定义函数吧,到我这里不通
      

  11.   

    to imdt(睡不死不起床) :
    你的结果如下,也不对
    时间段     在职人数        
    ------- ----------- 
    2002.01     9
    2002.02     9
    2002.03     9
    2002.04     9
    2002.06     9
    2002.07     9
      

  12.   

    SQL> DESC TEST_YLM;
    Name   Type        Nullable Default Comments 
    ------ ----------- -------- ------- -------- 
    INDATE DATE        Y                         
    STATE  VARCHAR2(1) Y  數據:
    INDATE     STATE
    ---------- -----
    2001.03.19 1    
    2001.05.10 0    
    2001.11.11 1    
    2002.01.21 1    
    2002.04.25 1    
    2002.06.08 0    
    2002.06.12 1    
    2002.06.15 1    
    2002.07.11 1    
    2002.07.12 1    
    2002.07.16 1    SQL語句:
    --------------------------------------------------------
     SELECT DISTINCT TO_CHAR(A.INDATE,'YYYY.MM') MONTH,
            (SELECT COUNT(*) EMP_COUNT
             FROM TEST_YLM B
             WHERE TO_CHAR(B.INDATE,'YYYY.MM')
             <=TO_CHAR(A.INDATE,'YYYY.MM')
             AND STATE='1'
             ) EMP_COUNT
      FROM TEST_YLM A
      WHERE TO_CHAR(A.INDATE,'YYYY.MM')>='2001.01'     
    結果:
    _____________________________________________________
    MONTH    EMP_COUNT
    ------- ----------
    2001.03          1
    2001.05          1
    2001.11          2
    2002.01          3
    2002.04          4
    2002.06          6
    2002.07          9
      

  13.   

    我用的是ORACLE測試的。TO_CHAR是ORACLE內置的數據轉換函數。我想其他數據庫系統也應該有相應的轉換函數。
      

  14.   

    to imdt:you are a good man, if i am a beautiful and mild girl i must be married to you.
    your answer is correct.thank you for your help.你现在写的已经很好用了, 如果你要是能象我说的那样,把从开始日期到现在按月都列出来,不管那个月有没有人入职,都列出来就更完美了,比如你上面的查询结果要是下面这样就更漂亮了:
    MONTH    EMP_COUNT
    ------- ----------
    2001.03          1
    2001.04          1
    2001.05          1
    2001.06          1
    2001.07          1
    2001.08          1
    2001.09          1
    2001.10          1
    2001.11          2
    2001.12          2
    2002.01          3
    2002.02          3
    2002.03          3
    2002.04          4
    2002.05          4
    2002.06          6
    2002.07          9
    再呆一会如果没有人答,就结贴
      

  15.   

    to gsoft(xiaoxiao):哈哈哈,謝謝!