我想求上季度(包含上季度)35岁以上,60岁以上的建档人数
select sum(case when (sysdate-出生日期)/365>=35 aND (SYSDATE-出生日期)/365<60 then 1 else 0 end) As 大于35岁,
       sum(case when (sysdate-出生日期)/365>=60 then 1 else 0 end) As 大于60岁,
       sum(case when (sysdate-出生日期)/365<35 then 1 else 0 end ) As 小35岁
       from 个人基本信息  
where  case to_char(sysdate, 'Q') when '1' then 建档日期 < to_date(to_char(sysdate,'yyyy')||'.01.01','yyyy.mm.dd')  
      when '2' then 建档日期 <  to_date(to_char(sysdate,'yyyy')||'.04.01','yyyy.mm.dd') 
      when '3' then 建档日期 < to_date(to_char(sysdate,'yyyy')||'.07.01','yyyy.mm.dd') 
      else 建档日期 <  to_date(to_char(sysdate,'yyyy')||'.10.01','yyyy.mm.dd') 
      end  报错为:ora-00905:缺失关键字 select  case to_char(sysdate, 'Q') when '1' then  to_date(to_char(sysdate,'yyyy')||'.01.01','yyyy.mm.dd') 
      when       '2' then to_date(to_char(sysdate,'yyyy')||'.04.01','yyyy.mm.dd') 
      when     '3' then to_date(to_char(sysdate,'yyyy')||'.07.01','yyyy.mm.dd')
      else  to_date(to_char(sysdate,'yyyy')||'.10.01','yyyy.mm.dd') 
      end  As 季度
      from dual;
这个都没有错。

解决方案 »

  1.   

    ORA-00905 missing keywordCause: A required keyword is missing.Action: Correct the syntax.
      

  2.   

    where里用case?你这是偷天换日,这个需要用动态SQL。
      

  3.   


    问题处在红色的部分 ,then后面应该是值,不是表达式
      

  4.   

    select sum(case when (sysdate-出生日期)/365>=35 aND (SYSDATE-出生日期)/365 <60 then 1 else 0 end) As 大于35岁, 
          sum(case when (sysdate-出生日期)/365>=60 then 1 else 0 end) As 大于60岁, 
          sum(case when (sysdate-出生日期)/365 <35 then 1 else 0 end ) As 小35岁 
          from 个人基本信息  
    where  建档日期 < case to_char(sysdate, 'Q') when '1' then to_date(to_char(sysdate,'yyyy')||'.01.01','yyyy.mm.dd')  
          when '2' then  to_date(to_char(sysdate,'yyyy')||'.04.01','yyyy.mm.dd') 
          when '3' then  to_date(to_char(sysdate,'yyyy')||'.07.01','yyyy.mm.dd') 
          else   to_date(to_char(sysdate,'yyyy')||'.10.01','yyyy.mm.dd') 
          end  
      

  5.   

    where 条件 and 条件 and 条件 
      

  6.   

    这里条件用
    where 建档日期<trunc(sysdate,'q')
    就行了