Подтвердить что ты не робот

Использование предложения BETWEEN в CASE SQL

Я хочу получить процентную ставку за все 12 месяцев из нашей таблицы ставок и разделить ее на месяцы, я начал писать SQL-выбор с помощью случая, но я, кажется, что-то делаю неправильно в части "Между". мой SQL

SELECT AVG(SELL_RATE),
       AVG(BUY_RATE),
       CASE MONTHS
            WHEN RATE_DATE( BETWEEN '2010-01-01' AND '2010-01-31') THEN 'JANUARY'
            ELSE 'NOTHING'
   END AS 'MONTHS'
FROM   RATE
WHERE  CURRENCY_ID = CURRENCY -033'
4b9b3361

Ответ 1

Выньте МЕСЯЦ из вашего футляра и удалите скобки... вот так:

CASE 
    WHEN RATE_DATE BETWEEN '2010-01-01' AND '2010-01-31' THEN 'JANUARY'
    ELSE 'NOTHING'
END AS 'MONTHS'

Вы можете думать об этом как о эквиваленте:

CASE TRUE
    WHEN RATE_DATE BETWEEN '2010-01-01' AND '2010-01-31' THEN 'JANUARY'
    ELSE 'NOTHING'
END AS 'MONTHS'

Ответ 2

Вы не указываете, почему вы считаете, что это неправильно, но я могу выделить две опасности:

BETWEEN может быть реализовано по-разному в разных базах данных, иногда он включает значения границ и иногда исключает, в результате чего 1 и 31 января не будут НИЧЕГО. Вы должны проверить, как это делается в базе данных.

Кроме того, если RATE_DATE содержит часы, также 2010-01-31 может быть переведен в 2010-01-31 00:00, что также исключало бы любую строку с часом другого, что 00:00.