当前位置: 代码迷 >> Oracle技术 >> 查询部分给一段 case when 子句去了个别名,然后按此别名分组时报错,请教这个怎么修改
  详细解决方案

查询部分给一段 case when 子句去了个别名,然后按此别名分组时报错,请教这个怎么修改

热度:122   发布时间:2016-04-24 08:08:51.0
查询部分给一段 case when 子句去了个别名,然后按此别名分组时报错,请问这个如何修改?
按红色标注的字段分组时,报错:ORA-00904 invalid column name ,如何破? 大神指点下

select count(*) as count_num,
       (case
         when (APPLY_AREA_CODE is not null) and length(APPLY_AREA_CODE) >= 4 and
              (substr(APPLY_AREA_CODE, 3, 2) <> '00' or
              substr(APPLY_AREA_CODE, 1, 2) = '12' or
              substr(APPLY_AREA_CODE, 1, 2) = '11' or
              substr(APPLY_AREA_CODE, 1, 2) = '31' or
              substr(APPLY_AREA_CODE, 1, 2) = '51') then
          USER_ADDRESS3
         else
          USER_ADDRESS2
       end) stat_type
       
  from tmp_ar_statisticinfo
  
 where (STATION_STAT_STATUS = '1' and APPLY_APP_SUBJECT = '1')
 
    or (STATION_STAT_STATUS = '1' and APPLY_APP_SUBJECT = '0' and
       USER_USER_TYPE = '0')
       
 group by stat_type;
------解决方案--------------------
引用:
按红色标注的字段分组时,报错:ORA-00904 invalid column name ,如何破? 大神指点下

select count(*) as count_num,
       (case
         when (APPLY_AREA_CODE is not null) and length(APPLY_AREA_CODE) >= 4 and
              (substr(APPLY_AREA_CODE, 3, 2) <> '00' or
              substr(APPLY_AREA_CODE, 1, 2) = '12' or
              substr(APPLY_AREA_CODE, 1, 2) = '11' or
              substr(APPLY_AREA_CODE, 1, 2) = '31' or
              substr(APPLY_AREA_CODE, 1, 2) = '51') then
          USER_ADDRESS3
         else
          USER_ADDRESS2
       end) stat_type
       
  from tmp_ar_statisticinfo
  
 where (STATION_STAT_STATUS = '1' and APPLY_APP_SUBJECT = '1')
 
    or (STATION_STAT_STATUS = '1' and APPLY_APP_SUBJECT = '0' and
       USER_USER_TYPE = '0')
       
 group by stat_type;


SELECT count(*) as count_num, stat_type
  FROM (select (case
                 when (APPLY_AREA_CODE is not null) and
                      length(APPLY_AREA_CODE) >= 4 and
                      (substr(APPLY_AREA_CODE, 3, 2) <> '00' or
                      substr(APPLY_AREA_CODE, 1, 2) = '12' or
                      substr(APPLY_AREA_CODE, 1, 2) = '11' or
                      substr(APPLY_AREA_CODE, 1, 2) = '31' or
                      substr(APPLY_AREA_CODE, 1, 2) = '51') then
                  USER_ADDRESS3
                 else
                  USER_ADDRESS2
  相关解决方案