MySQL - 选择财政年度

时间:2015-12-31 22:42:22

标签: mysql financial leap-year fiscal

我有这个SELECT:

SELECT 
    m.`maschine-name` AS byMaschine,
    q.`mname` AS byMName,
    SUM(YEAR(q.`created`) = YEAR(CURDATE())) AS total
FROM qualitaet q INNER JOIN
    maschinen m 
    ON m.maschine = q.maschine
WHERE
    q.`status`='1'
GROUP BY
    q.maschine, q.mname;

获取当年的所有结果,看起来像这样:

| maschine-name | mname | total |
|     TYP 1     |   0   |   4   |
|     TYP 2     |   3   |   4   |
|     TYP 2     |   4   |   4   |
|     TYP 3     |   0   |   4   |
|     TYP 4     |   0   |   4   |

参见 SQL小提琴here

但我想将其选为财政年度(财政年度),从> = 10月1日开始,以获得此结果:

| maschine-name | mname | total |
|     TYP 1     |   0   |   3   |
|     TYP 2     |   3   |   2   |
|     TYP 2     |   4   |   0   |
|     TYP 3     |   0   |   2   |
|     TYP 4     |   0   |   2   |

我有不同的日期陈述,但是财政年度让我发疯: - (

显示 TODAY 的数据:

SUM(DATE(created) = CURDATE()) AS total

显示 CURRENT WEEK 的数据:

SUM(YEARWEEK(q.`created`, 1) = YEARWEEK(CURRENT_DATE, 1)) AS total

显示 CURRENT MONTH 的数据:

SUM(q.`created` >= CURDATE() - INTERVAL DAY(CURDATE())-1 DAY) AS total

显示 CURRENT YEAR 的数据:

SUM(YEAR(q.`created`) = YEAR(CURDATE())) AS total


有没有办法从上面得到这个结果?

祝福和新年快乐; - )

1 个答案:

答案 0 :(得分:1)

我是用MAKEDATE做的。 Startdate是10月1日

SUM(q.`created` >= MAKEDATE(year(now()-interval 1 year),1) + interval 9 month) AS total

参见SQLFiddle here

完成SELECT:

SELECT 
    m.`maschine-name` AS byMaschine,
    q.`mname` AS byMName,
    SUM(q.`created` >= MAKEDATE(year(now()-interval 1 year),1) + interval 9 month) AS total
FROM qualitaet q INNER JOIN
    maschinen m 
    ON m.maschine = q.maschine
WHERE
    q.`status`='1'
GROUP BY
    q.maschine, q.mname;

现在我收到了这个结果:

| maschine-name | mname | total |
|     TYP 1     |   0   |   3   |
|     TYP 2     |   3   |   2   |
|     TYP 2     |   4   |   0   |
|     TYP 3     |   0   |   2   |
|     TYP 4     |   0   |   2   |