SQL财政季度总计...我已经有了日历

时间:2011-08-23 13:17:02

标签: mysql sql select

以下是我对日历年度季度总计的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日,那里可能会有一个案例陈述。但我不能让它正确出来。

4 个答案:

答案 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日期,然后仅在实际需要时翻译/使用会计日期 - 我们这里有一些总结表,这些表格在财政年度/期间关键,但显示购物行为数据对于客户(我们的会计年度不知道/关心的人)......