以下是我对日历年度季度总计的SQL查询
SELECT
SUM(CASE WHEN WEEK(LAST_DAY) <= 13 THEN BILLABLE END) AS Q1
,SUM(CASE WHEN WEEK(LAST_DAY) >= 14 AND WEEK(LAST_DAY) <= 26 THEN BILLABLE END) AS Q2
,SUM(CASE WHEN WEEK(LAST_DAY) >= 27 AND WEEK(LAST_DAY) <= 39 THEN BILLABLE END) AS Q3
,SUM(CASE WHEN WEEK(LAST_DAY) >= 40 AND WEEK(LAST_DAY) <= 53 THEN BILLABLE END) AS Q4,
Emp_Name
FROM 'emp_info'
WHERE YEAR(LAST_DAY) = YEAR(CURRENT_TIMESTAMP)
GROUP BY Emp_Name
我需要转移它,以便它给我财政年度(7月1日至6月30日)总计。
我知道这样做的时候,周数需要在7月1日开始,而不是1月1日,那里可能会有一个案例陈述。但我不能让它正确出来。
答案 0 :(得分:1)
尝试此查询 -
SELECT
Emp_Name,
IF(DATE(LAST_DAY) <= DATE('2011-6-30'), YEAR(LAST_DAY) - 1, YEAR(LAST_DAY)) f_year,
QUARTER(LAST_DAY) quarter,
SUM(BILLABLE)
FROM
emp_info
GROUP BY
Emp_Name,
f_year,
quarter;
答案 1 :(得分:1)
如果我是你,我会将财政季度存入一张桌子。然后您的查询将变得简单。它们不仅简单易行,而且在它们是正确的时候也是显而易见的。
答案 2 :(得分:0)
您知道您的查询不会将年份分为4个季度吗?而不是使用WEEK()
函数使用MONTH()
。
通过按月和年(YEAR()
)运作,计算财政年度的金额很容易。
答案 3 :(得分:0)
您真正的问题是,一般来说,日期和时间功能只适用于ISO /(其他常见)日历日期/时间对象,但您需要它们才能在公司特定的会计日历上工作。
这就是使用Calendar files作为财务和ISO日历之间的转换的原因。 在任一方向上生成日历文件输出几年,然后您可以加入它,按财政年度和期间限制/分组。不需要案例陈述。
我还建议将表格中的大多数日期存储为实际的ISO日期,然后仅在实际需要时翻译/使用会计日期 - 我们这里有一些总结表,这些表格在财政年度/期间关键,但显示购物行为数据对于客户(我们的会计年度不知道/关心的人)......