Использование предложения 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'
Ответы
Ответ 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.