2015-01-27 17 views
5

Ben bir tablo vardır:Sql Server GROUP'da tarihe göre sipariş nasıl biçimlendirilir? aşağıdaki gibi

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 

: geçtim sayısını görüntülemek için SQL Server bir sorgu yazmaya çalışılıyor

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 

/aşağıdaki biçimde günde sonuçlarını başarısız sorguda aşağıdaki Ben teşebbüs:

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

sonuç kümesi doğru fakat sipariş biçimlendirilmiş tarih dizesiyle gelir (ay-gün-yıl Alfabetik müttefik). Sonucu gerçek tarihte nasıl test edebilirim (TestDate)? MySQL'de, yukarıdaki sorguda son satır yerine ORDER BY TestDate yapmış olabilir. Hemen hemen zaten orada onunla Bu çalışması gerekir

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

cevap

5

+0

Vay, bu işe yarıyor! Kadronun neden gerekli olduğunu açıklar mısınız? – devnull

+0

çünkü zaman damgasını kaldırmanız gerektiğinden, sqlserver bu biçimi bir tarih olarak tanıyamaz. Bunun yerine convert/cast kullanmış olsaydınız farklı olurdu –

2

:

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

bunu denemişti. MMM-dd-yyyy'ye göre gruplamaya ihtiyacım var çünkü saat, dakika, saniye vb. Ortadan kaldırmam gerekiyor. Ama eğer bunu yaparsam, TestDate tarafından sipariş veremem. Biçimlendirilmiş tarihe göre sipariş vermek zorunda kalacağım; – devnull