我想求上季度(包含上季度)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;
这个都没有错。
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;
这个都没有错。
问题处在红色的部分 ,then后面应该是值,不是表达式
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
where 建档日期<trunc(sysdate,'q')
就行了