dev*_*ull 7 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
Run Code Online (Sandbox Code Playgroud)
我试图在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
Run Code Online (Sandbox Code Playgroud)
以下是我尝试的查询:
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');
Run Code Online (Sandbox Code Playgroud)
结果集是正确的,但排序来自格式化日期字符串(按字母顺序排列的月 - 日 - 年).如何在实际日期(TestDate)上订购结果?在MySQL中,我可以完成ORDER BY TestDate上述查询中的最后一行.
这应该工作:
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);
Run Code Online (Sandbox Code Playgroud)