0

ここで尋ねられた質問のパート2 -

複数の合計列を返す MySQL クエリ

SQL テーブルに次のデータがあります。何年にもわたるデータにまたがるさらに多くの行があると想像してください。

uid    user    category    count    date
--------------------------------------------------
1      henry   RED         4        2013-04-01
2      john    BLUE        3        2013-04-11
4      eric    GREEN       2        2013-04-22
3      alice   RED         5        2013-05-01
5      eric    BLUE        2        2013-05-12
6      john    RED         3        2013-05-23
7      henry   GREEN       2        2013-06-03
8      eric    RED         3        2013-06-08
9      john    BLUE        5        2013-07-11
... (more) ...

日付に従って列にグループ化された次のデータを返すクエリが必要です。GROUP BY コマンドを使用してデータを行にグループ化する方法を知っています。しかし、列ごとに行う方法がわかりません。

category    May 2013     April 2013  ... (more)
------------------------------------
RED         8            4           
BLUE        2            3     
GREEN       0            2

日付と時刻の関数を使用する限り、おそらく多くのオプションがあることに気づきました。私は、任意の数の列を提供するために SQL のロジックを設定する方法の基本構造をさらに探しています。

4

3 に答える 3

0

ケースごとに合計してみてください (真でない場合は合計 0 になります)。次のように:

SELECT 
   ...
   SUM(CASE WHEN date BETWEEN ... AND ... THEN 'count' ELSE 0 END) as 'May 2013',
   SUM(CASE WHEN date BETWEEN ... AND ... THEN 'count' ELSE 0 END) as 'April 2013',
   etc.
FROM ...,
GROUP BY category
于 2013-06-26T16:59:40.143 に答える
0

月/年をループするには、手続き型言語 My SQL を使用する必要があると思います。

于 2013-11-24T15:51:15.583 に答える