1

私はこの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フィドルを参照してください

しかし、この結果を得るには、>= Oct, 1 から始まる会計年度 (会計年度) として SELECT したい:

| 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

現在の週のデータを表示:

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


上記からこの結果を取得する方法はありますか?

明けましておめでとうございます;-)

4

1 に答える 1

2

私はMAKEDATEでそれをしました。開始日は 10 月 1 日です

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

ここでSQLFiddleを参照してください

完全な選択:

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   |
于 2016-01-01T00:50:14.690 に答える