SQLServer2005データベースに次のフィールドを含むテーブルがあります。
id, integer
value, string
create_date, datetime
このテーブルには常に新しいデータが挿入されているため(1日あたり数万レコード)、次のクエリを使用して、さまざまな日に挿入されたデータの量を比較します。
SELECT CONVERT(varchar(10), create_date, 101) as 'Date', COUNT(*) as 'Record Count',
FROM the_table
GROUP BY CONVERT(varchar(10), create_date, 101)
ORDER BY 'Date' desc
このクエリは、次のようなデータを返します。
12/20/2012 | 48155
12/19/2012 | 87561
12/18/2012 | 71467
ただし、今日このクエリを実行すると、データベース内の複数年分のデータで並べ替えが期待どおりに機能しないことに気付きました。今年のデータが結果セットの一番上にある代わりに、最後に一番下になりました(わかりやすくするためにレコードは省略されています)
06/29/2012 | 9987
01/04/2013 | 15768
01/03/2013 | 77586
01/02/2013 | 23566
フォーマットされた日付は単なる文字列であり、SQLサーバーが文字列以外のものとしてソートすることはおそらく期待できないため、これが発生する理由を理解しています。しかし、私は順序が正確であることを望みます。どうすればこれを達成できますか?(常に最新の日が最初に表示されます)