0

列日付のテーブルがあります。数か月の記録が含まれていますが、継続的ではありません。どの月が存在するか (特定の月の 1 つ以上のレコードを意味する現在) を確認するために、概要を作成しようとしました。次のようになります。

2013  Jan  Feb Mar -   May Jun // etc
2012  Jan  -   -   Apr May -   // etc

現在の月の最初の日をすべて取得できますが、転置する方法に行き詰まっています。私がこれを行う場合:

SELECT
    IF (d = 1, month ,'-') AS Jan,
    IF (d = 2, month ,'-') AS Feb,
    IF (d = 3, month ,'-') AS Mar
FROM
    (SELECT
        MONTH(date) AS d,
        DATE_FORMAT(date, '%Y-%m-01') AS month
    FROM
        table
    GROUP BY
        month
    ORDER BY
        month) m 
GROUP BY YEAR(month)              

結果としてこれを与える場合:

 Jan  Feb  Mar
 -    -    Mar
 -    Feb  - 

それは与えるべきですが:

 Jan  Feb  Mar
 -     -   Mar
 Jan  Feb  Mar 
4

1 に答える 1