1

データベースに6か月のデータを作成しました。これは、productiondateとして列名を持っています。このproductiondate列に6か月の日付を指定しました。今、私はこの単一のproductiondate列から月ごとのデータのデータを取得する必要があります。

次のように表示する必要があります

jan、feb、mar、........decを別々の列に

4

2 に答える 2

3

現在のテーブル構造または既存のクエリの詳細を提供していませんが、データを行から列にピボットしようとしているようです。

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 BYvalueまた、を毎月下に表示する列の名前に置き換えます。

于 2013-02-19T12:00:00.053 に答える
2

月を使用してGROUP BY月ごとのレポートを生成する必要があります。また、要件に基づいて、、などSUMの集計関数を使用する必要がある場合もあります。COUNTAVG

関数を利用MonthNameして、日付から月の名前を取得 できます。

mysql> SELECT MONTHNAME('1998-02-05');
    -> 'February'

したがって、クエリは次のようになります。

SELECT MONTHNAME(productiondate) as mon, SUM(XYZ), COUNT(*) 
FROM Your_Table_Name
GROUP BY mon
于 2013-02-19T12:02:53.940 に答える