2012-02-15 3 views
5

Tôi có một thủ tục mà trở về báo cáo hàng ngày giữa một ví dụ thời gian (Tạo ngày GIỮA '2012/01/21' AND '2012/02/19')trật tự tự động trong một lựa chọn

Tôi muốn kết quả này

1/21 
1/22 
1/23 
. 
2/1 
. 
. 

Nhưng sản lượng được sắp xếp tự động dựa trên ngày !! Như sau:

2/1 
2/2 
. 
2/15 
1/21 
1/22 
1/23 
. 
. 

tôi không thể sử dụng để do (Tạo ngày) bởi vì tôi có này chọn:

0.123.
SELECT  COUNT(UserId) AS c, DAY(CreateDate) AS d 
FROM  dbo.aspnet_Membership 
WHERE  (CreateDate BETWEEN '2012/1/21' AND '2012/2/19') 
GROUP BY DAY(CreateDate) 
+0

Nếu cột đầu tiên (trước /) là tháng, bạn * không * có mà đầu ra cho truy vấn đó. – gbn

Trả lời

8

Nếu bạn muốn sắp xếp theo tháng và ngày, thì bạn cần tháng của khóa học.

Và bạn luôn luôn cần một ORDER BY để đảm bảo thứ tự kết quả.

SELECT  COUNT(UserId) AS c, MONTH(CreateDate) AS m, DAY(CreateDate) AS d 
FROM  dbo.aspnet_Membership 
WHERE  (CreateDate BETWEEN '2012/1/21' AND '2012/2/19') 
GROUP BY MONTH(CreateDate) AS m, DAY(CreateDate) AS d 
ORDER BY MONTH(CreateDate) AS m, DAY(CreateDate) AS d 

Trong trường hợp này, theo thứ tự bạn đã nhận được sự trùng hợp vì GROUP BY (trong đó hàm ý một ORDER BY trong MySQL, nhưng không RDBMS khác)

+2

+1 cho "luôn cần một đơn đặt hàng theo" –

1

Nếu bạn có nghĩa là bạn muốn Sắp xếp theo ngày ,

điều này có thể làm việc cho bạn

SELECT COUNT(UserId) AS c, DAY(CreateDate) AS d 
    FROM dbo.aspnet_Membership 
WHERE (CreateDate BETWEEN '2012/1/1' AND '2012/2/29') 
    GROUP BY DAY(CreateDate) 
ORDER By d ASC 
+0

Tạo ngày tháng '2012/1/21' VÀ '2012/2/19' là quan trọng! –