1

我在我的数据库中创建了 6 个月的数据,其列名为生产日期。我为这个生产日期栏提供了 6 个月的日期。现在我需要从这个单一的生产日期列中检索每月数据的数据。

我需要按以下方式显示

一月,二月,三月,........十二月在单独的列中

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 BY. 您还可以将 替换为value您希望在每个月下显示的列的名称。

于 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 回答