我在我的數據庫中創建了6個月的數據,其中的列名稱爲productiondate。我爲此生產日期欄提供了6個月的日期。現在我需要從這個單一的productiondate列檢索月度數據的數據。如何在mysql中顯示monthwise報表
我需要通過以下方式來顯示
一月,二月,三月,........ DEC中單獨列
我在我的數據庫中創建了6個月的數據,其中的列名稱爲productiondate。我爲此生產日期欄提供了6個月的日期。現在我需要從這個單一的productiondate列檢索月度數據的數據。如何在mysql中顯示monthwise報表
我需要通過以下方式來顯示
一月,二月,三月,........ 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
謝謝你,我得到了一些答案通過近.. – user1965826 2013-02-21 08:49:03
非常感謝,您的查詢是非常有幫助.. – user1965826 2013-02-23 07:19:43