SQL Фильтр не работает с псевдонимом в выписке - PullRequest
0 голосов
/ 06 марта 2020

Я продолжаю получать ошибки при попытке выполнить свое утверждение, говоря следующее:

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", в качестве фильтров? Я думаю, что я видел это раньше, поэтому я, должно быть, делаю что-то не так, пожалуйста, дайте мне знать, спасибо!

1 Ответ

3 голосов
/ 06 марта 2020

Нельзя одновременно создавать и использовать поле в 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
...