2013-02-19 58 views
1

我在我的數據庫中創建了6個月的數據,其中的列名稱爲productiondate。我爲此生產日期欄提供了6個月的日期。現在我需要從這個單一的productiondate列檢索月度數據的數據。如何在mysql中顯示monthwise報表

我需要通過以下方式來顯示

一月,二月,三月,........ DEC中單獨列

回答

2

你沒有提供有關當前的表結構的任何細節或現有的查詢,但它聽起來像你正在嘗試樞軸數據從行到列。

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替換爲您想要在每個月下顯示的列的名稱。

+0

謝謝你,我得到了一些答案通過近.. – user1965826 2013-02-21 08:49:03

+0

非常感謝,您的查詢是非常有幫助.. – user1965826 2013-02-23 07:19:43

2

您需要使用GROUP BY月份並生成月份明細報告,您可能還需要根據您的要求使用像SUMCOUNTAVG這樣的聚合函數。

您可以利用MonthName函數獲取月份名稱

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

讓你的查詢可能看起來象下面這樣:

SELECT MONTHNAME(productiondate) as mon, SUM(XYZ), COUNT(*) 
FROM Your_Table_Name 
GROUP BY mon