我希望从我们的费率表中获得所有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'
答案 0 :(得分:31)
从你的案例中取出MONTHS,并删除括号......如下:
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'
答案 1 :(得分:0)
你没有说明为什么你认为这是错误的,但我可以有两个危险:
BETWEEN可以在不同的数据库中以不同的方式实现,有时它包括边界值并且有时被排除,导致1月1日和31日最终结束。您应该测试数据库如何执行此操作。
另外,如果RATE_DATE包含小时数,则2010-01-31可能会被翻译为2010-01-31 00:00,这也会排除任何一小时以外的00:00行。