2017-10-20 12 views
0

좋은 아침,AS/400 (녹색 화면) SQL 열 변수가

나는 AS/400 (녹색 화면) 내부의 SQL 쿼리를 실행하고있어 별칭 열 이름을 당기에 문제를 갖는를 찾을 수 없습니다. 나는 그것으로 기대 작품 다음에 스크립트를 변경하는 경우, 그러나

Column or global variable SALES_LESS_OCTOBER not found. 

: : 나는 그것을 실행할 때 오류를받는

/* Join forecast info with item warehouse info */ 
    SELECT item, itmdsc, 
     today, 
     October, QSMOIB, 
     (QSMOIB - October) AS Sales_less_October  

    FROM 
     /* Summarizing forecast data in a SQL query */ 
     (SELECT item, itmdsc, whse, 
       today, range, 
       (wk01 + wk02 + wk03 + wk04) AS October 
      FROM FCSTCUR) AS f  
    JOIN  
     /* Select "Qty sold this period" */ 
     (SELECT ITNOIB, WHIDIB, QSMOIB 
      FROM ITEMBLL0) AS iw 

     ON f.item = iw.ITNOIB AND 
     f.whse = iw.WHIDIB 
    WHERE Sales_less_October <> 0 
ORDER BY Sales_less_October ASC 

: 여기

내 스크립트입니다

/* Join forecast info with item warehouse info */ 
    SELECT item, itmdsc, 
     today, 
     October, QSMOIB, 
     (QSMOIB - October) /* AS Sales_less_October */ 

    FROM 
     /* Summarizing forecast data in a SQL query */ 
     (SELECT item, itmdsc, whse, 
       today, range, 
       (wk01 + wk02 + wk03 + wk04) AS October 
      FROM FCSTCUR) AS f  
    JOIN  
     /* Select "Qty sold this period" */ 
     (SELECT ITNOIB, WHIDIB, QSMOIB 
      FROM ITEMBLL0) AS iw 

     ON f.item = iw.ITNOIB AND 
     f.whse = iw.WHIDIB 
    WHERE (QSMOIB - October) <> 0 
ORDER BY (QSMOIB - October) ASC 

"Sales_less_October"을 (QSMOIB - October)로 바꿨습니다.

가 표시 "숫자 식"보다 훨씬 더 분명 나는 정말 별칭을 사용할 수 있도록하고 싶습니다

:

enter image description here

많은 감사합니다, 나는 데이터를 유감 업로드 할 수 없습니다 ... 서버에 있습니다.

+0

. 해결 방법이 올바른 것입니다. SELECT에서 별명을 사용하고 WHERE에서 별명을 지정하지 마십시오. 예상 결과에 대한 2 개의 쿼리를 결합하십시오. –

+1

실제로는 별명은 where 절이 아닌 순서에 따라 사용할 수 있습니다. 그것은 모두 논리적 인 처리 순서와 관련이 있습니다. –

+0

@SeanLange 맞습니까?이 주제에 대한 읽기 권장 사항은 무엇입니까? 나는 SQL에 상당히 익숙하지 않으며 가능한 경우 모범 사례를 사용하려고 노력하고있다. – Sescopeland

답변

2

당신이 당신의 WHEREORDER BY 절을 사용하여 별칭을 사용하려는 경우 WITH()에서 당신이 둥지 쿼리의 나머지 부분을 경우, 당신이 그것을 할 수 있습니다 : 당신은 할 수 없습니다

WITH ONE AS (
    SELECT item, itmdsc, 
      today, 
      October, QSMOIB, 
      (QSMOIB - October) AS Sales_less_October  

    FROM (
     SELECT item, itmdsc, whse, 
       today, range, 
       (wk01 + wk02 + wk03 + wk04) AS October 
     FROM FCSTCUR 
    ) AS f  
    JOIN (
     SELECT ITNOIB, WHIDIB, QSMOIB 
     FROM ITEMBLL0 
    ) AS iw 
    ON f.item = iw.ITNOIB 
    AND f.whse = iw.WHIDIB 
    ) 
SELECT * 
FROM ONE 
WHERE Sales_less_October <> 0 
ORDER BY Sales_less_October ASC