データベースに6か月のデータを作成しました。これは、productiondateとして列名を持っています。このproductiondate列に6か月の日付を指定しました。今、私はこの単一のproductiondate列から月ごとのデータのデータを取得する必要があります。
次のように表示する必要があります
jan、feb、mar、........decを別々の列に
現在のテーブル構造または既存のクエリの詳細を提供していませんが、データを行から列にピボットしようとしているようです。
MySQLにはピボット関数がないため、式を含む集計関数を使用して複製する必要がありますCASE
。コードは次のようになります。
select otherColumns,
max(case when month(productiondate)=1 then value end) Jan,
max(case when month(productiondate)=2 then value end) Feb,
max(case when month(productiondate)=3 then value end) Mar,
max(case when month(productiondate)=4 then value end) Apr,
max(case when month(productiondate)=5 then value end) May,
max(case when month(productiondate)=6 then value end) Jun,
....
from yourtable
group by otherColumns
次に、最終結果に含める他の列に置き換えotherColumns
ます。これらの列は、に含まれますGROUP BY
。value
また、を毎月下に表示する列の名前に置き換えます。
月を使用してGROUP BY
月ごとのレポートを生成する必要があります。また、要件に基づいて、、などSUM
の集計関数を使用する必要がある場合もあります。COUNT
AVG
関数を利用MonthName
して、日付から月の名前を取得 できます。
mysql> SELECT MONTHNAME('1998-02-05');
-> 'February'
したがって、クエリは次のようになります。
SELECT MONTHNAME(productiondate) as mon, SUM(XYZ), COUNT(*)
FROM Your_Table_Name
GROUP BY mon