2015-01-27 15 views
5

Tôi có một bảng như sau:Cách đặt hàng theo Ngày trong Sql Server GROUP BY được định dạng ngày?

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 

Tôi đang cố gắng để viết một truy vấn trong SQL Server để hiển thị số lượng thông qua/không kết quả mỗi ngày theo định dạng sau:

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 

Các sau đây là truy vấn tôi đã cố gắng:

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'); 

Tập kết quả là đúng, nhưng thứ tự đi kèm theo chuỗi ngày được định dạng (chữ cái theo tháng-năm-năm) đồng minh). Làm cách nào để đặt kết quả vào ngày thực tế (TestDate)? Trong MySQL, tôi có thể đã thực hiện ORDER BY TestDate thay vì dòng cuối cùng trong truy vấn ở trên.

Trả lời

5

này nên làm việc:

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); 
+0

Chà, nó hoạt động! Bạn có thể vui lòng giải thích tại sao diễn viên là cần thiết? – devnull

+0

vì bạn cần xóa dấu thời gian, sqlserver không thể nhận dạng định dạng đó là ngày tháng. Sẽ khác nếu bạn đã sử dụng chuyển đổi/truyền –

2

Khá nhiều đã có với nó

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

Tôi đã thử nó. Tôi cần phải nhóm theo MMM-dd-yyyy bởi vì tôi cần phải loại bỏ giờ, phút, giây vv Nhưng nếu tôi đặt nó, tôi không thể đặt hàng bởi TestDate. Tôi sẽ bị buộc phải đặt hàng theo ngày được định dạng, đơn đặt hàng dưới dạng chuỗi thay vì ngày. – devnull

Các vấn đề liên quan