복붙노트

[SQL] 별명으로 그룹 (오라클)

SQL

별명으로 그룹 (오라클)

어떻게 쿼리 '에 의해 그룹'에, 예를 들어, 별칭을 사용하여 :

select count(*), (select * from....) as alias_column 
from table 
group by alias_column

INVALID_IDENTIFIER 오류 메시지 : 나는 'alias_column'를 얻을. 왜? 어떻게이 쿼리 그룹에?

해결법

  1. ==============================

    1.

    select
      count(count_col),
      alias_column
    from
      (
      select 
        count_col, 
        (select value from....) as alias_column 
      from 
        table
      ) as inline
    group by 
      alias_column
    

    당신이 GROUP BY 절에서 각각의 표현을 반복하는 경우 일반적으로 그룹화하면 작동합니다. 그냥 별명을 언급하는 것은 SELECT 단계는 쿼리의 실행을 발생하는 마지막 단계이기 때문에, 가능하지 않다 그룹화하는 것은 이전, 별명이 아직 정의되지 않은 경우에 발생합니다.

    서브 쿼리의 결과 BY GROUP에, 당신은 위에 표시된대로, 조금 우회을하고 중첩 된 쿼리를 사용해야합니다.

  2. ==============================

    2.둥지 별칭 컬럼 쿼리 :

    둥지 별칭 컬럼 쿼리 :

    select count(*), alias_column
    from
    ( select empno, (select deptno from emp where emp.empno = e.empno) as alias_column
      from emp e
    )
    group by alias_column;
    
  3. ==============================

    3.

    select count(*), (select * from....) as alias_column 
    from table 
    group by (select * from....)
    

    오라클에서는 GROUP BY 절 별칭을 사용할 수 없습니다.

  4. ==============================

    4.별칭이 별칭이 사용되는 시점에서 귀하의 요청에 의해 정의되어 있는지 확인해야 오라클의 별칭을 사용합니다.

    별칭이 별칭이 사용되는 시점에서 귀하의 요청에 의해 정의되어 있는지 확인해야 오라클의 별칭을 사용합니다.

    이 작업을 수행하는 가장 간단한 방법은 단순히 서브 쿼리로 원래 쿼리를 처리하는 것입니다 -이 경우,

    select count(*), (select * from....) as alias_column 
    from table 
    group by (select * from....)
    

    가된다

    select count, alias_column 
    from
      (select count(*) as count, (select * from....) as alias_column 
      from table)
    group by alias_column 
    

    나는 성능에 영향을 말할 수 있지만, 당신은 당신의 쿼리에 별칭을 다시 사용하려는 경우 쓰기에 아주 빠르다 - 괄호 안에 던져 모든 것을 및 수준을 뛰어 ...

  5. ==============================

    5.당신이 별칭을 사용하지 않는 경우에 당신은 이런 식으로 할 수있는 :

    당신이 별칭을 사용하지 않는 경우에 당신은 이런 식으로 할 수있는 :

    select  
    EXTRACT(year from CURRENT_DATE), count(*) from something
    group by EXTRACT(year from CURRENT_DATE)
    order by EXTRACT(year from CURRENT_DATE)
    

    대신 별칭과 하위 쿼리를 사용.

  6. from https://stackoverflow.com/questions/268429/group-by-alias-oracle by cc-by-sa and MIT license