2014-05-15 2 views
0

이상한 오류가 발생했습니다. 답변을 알고 있지만 해결할 수없는 것 같습니다. "LatestUpdatedDate"는 유효하지 않은 식별자이고 CASE 문에 도달하기 전에 ORDER BY 문을 실행하기 때문에 그것이 구조화 된 방식으로는별로 의미가 없다고 생각합니다. 어떤 아이디어있어?오라클 : 별칭으로 정렬, 잘못된 식별자 오류

SELECT * FROM 
( 
    SELECT sym.*, 
    (
    CASE WHEN shr_last_updt_dt >= trd_last_updt_dt 
    THEN shr_last_updt_dt 
    ELSE trd_last_updt_dt END 
    ) AS LatestUpdatedDate, 
    row_number() over (ORDER BY LatestUpdatedDate DESC) AS line_number 
    FROM trdg_sym sym 
    WHERE ((wkly_rpt_dt = :settleDate)) AND ((lower(rpt_type_cd)=lower(:reportType))) 
) 
WHERE line_number BETWEEN 1 AND 25 ORDER BY line_number 

enter image description here

답변

3

별명은 그래서 당신은 윈도우 화 기능에서 사용할 수없는 설정 결과를 생성 후 주어진 것입니다.

SELECT * FROM 
( 
    SELECT sym.*, 
    (
    CASE WHEN shr_last_updt_dt >= trd_last_updt_dt 
    THEN shr_last_updt_dt 
    ELSE trd_last_updt_dt END 
    ) AS LatestUpdatedDate, 
    row_number() over (ORDER BY 
    (
     CASE WHEN shr_last_updt_dt >= trd_last_updt_dt 
     THEN shr_last_updt_dt 
     ELSE trd_last_updt_dt END 
    ) DESC) AS line_number 
    FROM trdg_sym sym 
    WHERE ((wkly_rpt_dt = :settleDate)) AND ((lower(rpt_type_cd)=lower(:reportType))) 
) 
WHERE line_number BETWEEN 1 AND 25 ORDER BY line_number 

또는 다른

SELECT * FROM 
(
    SELECT *, 
    row_number() over (ORDER BY LatestUpdatedDate DESC) AS line_number 
    FROM 
    (
    SELECT sym.*, 
     (
      CASE WHEN shr_last_updt_dt >= trd_last_updt_dt 
      THEN shr_last_updt_dt 
      ELSE trd_last_updt_dt END 
     ) AS LatestUpdatedDate 
    FROM trdg_sym sym 
    WHERE ((wkly_rpt_dt = :settleDate)) AND ((lower(rpt_type_cd)=lower(:reportType))) 
    ) 
) 
WHERE line_number BETWEEN 1 AND 25 ORDER BY line_number 

P.S.에 하위 쿼리를 포장 : 당신은이 작업을 수행 할 수 있습니다 oacle 구문에 대해 확신 할 수 없지만 하위 쿼리에 별칭을 지정해야합니까?

+0

감사합니다. 당신은 내가 생각한 것을 확증했다. 쿼리를 생성하는 .NET 응용 프로그램이있어서 코드를 다시 작성하면 많은 작업이 필요합니다. 나는 당신이 윤곽을 그리는 첫 번째 방법에 따라 작동하도록 할 수 있었으므로 이것을 올바른 대답으로 표시 할 것입니다. 감사!! – Keven

+0

추신 - 하위 쿼리에 별칭을 추가하는 방법을 찾은 적이 있다면 ... – Keven

+0

동일한 열 이름을 가진 두 개의 하위 쿼리가 있고이 두 테이블에 가입하려고한다고 가정 해보십시오. 열을 어떻게 참조할까요? –

관련 문제