添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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

9 人关注

我有一个表,如下所示。

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 ,而不是上述查询的最后一行。

sql
sql-server
sql-server-2008
softwarematter
softwarematter
发布于 2015-01-27
2 个回答
t-clausen.dk
t-clausen.dk
发布于 2015-01-27
已采纳
0 人赞同

这应该有效。

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);
    
哇,真管用!能否请你解释一下为什么需要铸币?
因为你需要去掉时间戳,sqlserver不能识别这种格式的日期。如果你用转换/广播来代替,情况会有所不同
Matt
Matt
发布于 2015-01-27
0 人赞同

基本上已经有了它