1

価格、タイムスタンプとしての日付、エントリーの月、エントリーの年の表があります。

+++++++++++++++++++++++++++++
Price | Date | Month | Year |
+++++++++++++++++++++++++++++
9.00  |343345|   2   | 2013 |
3.00  |343445|   2   | 2013 |
4.00  |343245|   1   | 2013 |
1.00  |342245|   1   | 2013 |
5.00  |333355|   12  | 2012 |

これまでのところ、月額の合計を一覧表示するためにこれを持っていますが、問題は、GROUP BYが結果を再ソートして、1か月目、12か月目、2か月目になるようにすることです。ここで、結果は今月から下がる必要があります。 -月。

"SELECT month,SUM(price), FROM table  GROUP BY month ORDER BY date DESC "

それが助けになるなら、私はPHPを使用しています。

4

4 に答える 4

1

月を数値ではなくテキストとして扱います。整数としてキャストすると、正しくソートされます。

SELECT CAST(Month as int) as Month, SUM(PRICE), FROM table Group by month ORDER BY CAST(MONTH as int) desc
于 2013-02-25T00:13:14.507 に答える
0

月をINTデータ型にキャストします。

SELECT month,SUM(price), SUM(price), FROM table GROUP BY month ORDER BY cast(month as UNSIGNED) DESC

詳細:キャスト

于 2013-02-25T00:14:49.797 に答える
0

私も同様の問題を抱えていました。'date'タイプの別の列を追加し、日付のすべての異なるフィールドを変換することで解決しました。その後、時間範囲内で選択を行うことができます。

于 2013-02-25T00:15:32.860 に答える
0

問題は、日付フィールドが日時として保存されていないことです。それによって並べ替える代わりに、年と月のフィールドで並べ替えてください (これらのフィールドの両方でグループ化する必要があると思います)。

SELECT year,month,SUM(price)
FROM table 
GROUP BY year,month 
ORDER BY year DESC, month DESC

年や月が varchar として格納されている場合は、それらをキャストします。ただし、これらは整数として格納されていると思われます。

于 2013-02-25T00:18:58.473 に答える