【发布时间】:2015-05-10 12:12:23
【问题描述】:
我在试图找出一种在我的访问数据库中获取一些 SQL 以根据dd/mm/yyyy(英国)格式的日期创建财务季度结果的好方法时遇到了一些真正的麻烦。我在“DimDate”表中有一个名为“Date”的列,在同一个表中有一个名为“FinancialQuarter”的列。
所以我本质上希望 SQL 能够解决以下问题:
如果月份介于 1 和 3 之间,则等于 Q1, 如果月份在 4 到 6 之间等于 Q2, 如果月份在 7 到 9 之间等于 Q3, 如果月份在 10 到 12 之间等于 Q4,
我有一些基本的 SQL 技能,但我不是专家。我在 StackOverflow 中找到了一个与这个问题类似的帖子,但是我没有从中取得任何进展。我修改的他们使用的SQL代码如下:
SELECT
Date,
CASE
WHEN MONTH(Date) BETWEEN 1 AND 3 THEN convert(char(4), YEAR(Date) - 1) + 'Q1'
WHEN MONTH(Date) BETWEEN 4 AND 6 THEN convert(char(4), YEAR(Date) - 1) + 'Q2'
WHEN MONTH(Date) BETWEEN 7 AND 9 THEN convert(char(4), YEAR(Date) - 0) + 'Q3'
WHEN MONTH(Date) BETWEEN 10 AND 12 THEN convert(char(4), YEAR(Date) - 0) + 'Q4'
END AS FinancialQuarter
FROM
DimDate
我的代码根本不起作用,而且可能完全错误,非常感谢任何帮助!
谢谢 詹姆斯。
【问题讨论】:
-
Access SQL 不支持
CASE WHEN构造。 Access SQL中对应的机制是Switch()函数。
标签: sql ms-access ms-access-2013 financial