Как включить в этот запрос оператор меньше, чем где из оператора case? - PullRequest
0 голосов
/ 26 марта 2020

Я хочу показывать результаты только за 90 дней или меньше в этом запросе, который я написал:

SELECT
 (amount / 100) as "Reel_$",
   CASE
   WHEN savingstrategyfrequency = 'day' THEN CEIL(((total - (successfulamount + pendingamount)) * 1.00) / savingstrategyamount)
    WHEN savingstrategyfrequency = 'week' THEN CEIL(((total - (successfulamount + pendingamount)) * 1.00) / ((savingstrategyamount * 1.00) / 7))
 END AS days_to_complete
FROM prodjoinreel.goals
WHERE
 status IN ('active')

, но когда я включаю следующий оператор where: where status IN ('active') and days_to_complete < 90 Я получаю ошибку. Что я делаю неправильно?

1 Ответ

0 голосов
/ 26 марта 2020

Вам нужно либо повторить выражение, либо использовать подзапрос (или cte):

SELECT *
FROM (
    SELECT
        (amount / 100) as "Reel_$",
        CASE
            WHEN savingstrategyfrequency = 'day' 
                THEN CEIL(((total - (successfulamount + pendingamount)) * 1.00) / savingstrategyamount)
            WHEN savingstrategyfrequency = 'week' 
                THEN CEIL(((total - (successfulamount + pendingamount)) * 1.00) / ((savingstrategyamount * 1.00) / 7))
        END AS days_to_complete
    FROM prodjoinreel.goals
    WHERE status IN ('active')
) t
WHERE days_to_complete < 90
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...