如何在Sql Server GROUP BY格式化日期按日期排序?

时间:2015-01-27 09:26:20

标签: sql sql-server sql-server-2008

我有一张表格如下:

Table: student_test_records

Student    TestDate                    Result
-------    ------------------          -------
A          2015-01-26 17:28:11         Pass
B          2015-01-24 17:28:11         Fail
C          2015-01-26 17:28:11         Pass
D          2015-01-26 17:28:11         Fail
E          2014-05-23 17:28:11         Pass
F          2013-06-23 17:28:11         Pass
G          2014-05-23 17:28:11         Fail

我正在尝试在SQL Server中编写一个查询,以按以下格式显示每天传递/失败的结果数:

FormattedDate          Result  Count
-----------            ------  ----- 
May-23-2013            Pass    1
May-23-2014            Fail    1
May-23-2014            Pass    1
Jan-24-2015            Fail    1
Jan-26-2015            Fail    1
Jan-26-2015            Pass    2

以下是我尝试的查询:

SELECT FORMAT(TestDate, 'MMM-dd-yyyy') as FormattedDate, Result, Count
FROM student_test_records  
GROUP BY FORMAT(TestDate, 'MMM-dd-yyyy'), Result 
order BY FORMAT(TestDate, 'MMM-dd-yyyy');

结果集是正确的,但排序来自格式化的日期字符串(按字母顺序排列的月 - 日 - 年)。如何在实际日期(TestDate)上订购结果?在MySQL中,我可以完成ORDER BY TestDate而不是上面查询中的最后一行。

2 个答案:

答案 0 :(得分:6)

这应该有效:

SELECT 
  FORMAT(cast(TestDate as date), 'MMM-dd-yyyy') as FormattedDate,
  Result,
  Count(*) as Count
FROM student_test_records  
GROUP BY cast(TestDate as date), Result 
ORDER BY cast(TestDate as date);

答案 1 :(得分:2)

几乎已经存在了它

SELECT FORMAT(TestDate, 'MMM-dd-yyyy') as FormattedDate, Result, Count(*)
FROM student_test_records  
GROUP BY TestDate, Result 
ORDER BY TestDate;