AS/400(绿屏)SQL 未找到列变量

AS/400 (Green screen) SQL column variable not found

早上好,

我在 AS/400(绿屏)中 运行 宁一个 SQL 查询,并且在提取别名列名时遇到问题。

这是我的脚本:

  /* 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

当我 运行 我收到错误:

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 (QSMOIB - October) <> 0
ORDER BY (QSMOIB - October) ASC

我只是将 "Sales_less_October" 替换为 (QSMOIB - October)。

我真的很希望能够使用别名,因为它比显示器更清晰 "Numeric Expression":

非常感谢,抱歉,我无法上传数据...它在我们的服务器上。

如果你想在 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