【问题标题】:SQL Filter not working with alias in statementSQL过滤器不适用于语句中的别名
【发布时间】:2020-03-06 13:29:19
【问题描述】:

我在尝试执行我的语句时不断收到错误消息,如下所示:

ERROR [42703] [IBM][DB2/LINUXX8664] SQL0206N "HAO" is not valid in the context where it is used.

错误是指我的过滤器,因为它在注释掉时可以正常工作。 见下文:


SELECT
    ROUND(MINUTESDIFF(CURRENT_DATE,LAST_ACTION_DATE)/60,2) AS HAO
FROM [database]
WHERE   1=1
    AND QTY     >      0
    AND STATE   =      'Active'
    AND HAO     >      5

ORDER BY ONHOLD DESC

你不能使用像“HAO”这样的别名作为过滤器吗?我想我以前见过它,所以我一定做错了什么,请告诉我, 谢谢!

【问题讨论】:

    标签: sql db2 where-clause column-alias


    【解决方案1】:

    您不能在 DB2 中同时创建和使用一个字段(其他数据库确实允许这样做)。

    你应该这样做:

    SELECT HAO
    FROM (
        SELECT
            ROUND(MINUTESDIFF(CURRENT_DATE,LAST_ACTION_DATE)/60,2) AS HAO,
            ONHOLD
        FROM [database]
        WHERE   1=1
            AND QTY     >      0
            AND STATE   =      'Active'
    ) TMP 
    WHERE HAO     >      5
    ORDER BY ONHOLD DESC
    

    或者:

    SELECT
        ROUND(MINUTESDIFF(CURRENT_DATE,LAST_ACTION_DATE)/60,2) AS HAO
    FROM [database]
    WHERE   1=1
        AND QTY     >      0
        AND STATE   =      'Active'
        AND ROUND(MINUTESDIFF(CURRENT_DATE,LAST_ACTION_DATE)/60,2) > 5
    ORDER BY ONHOLD DESC
    

    【讨论】:

    猜你喜欢
    • 2012-09-24
    • 2013-12-25
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多