Tôi nghĩ rằng tôi có một vấn đề khó ở đây ... :(Bao gồm tháng còn thiếu trong Nhóm By truy vấn
tôi đang cố gắng để có được một số thứ tự theo tháng, ngay cả khi không Dưới đây là các truy vấn vấn đề:.
SELECT datename(month, OrderDate) as Month, COUNT(OrderNumber) AS Orders
FROM OrderTable
WHERE OrderDate >= '2012-01-01' and OrderDate <= '2012-06-30'
GROUP BY year(OrderDate), month(OrderDate), datename(month, OrderDate)
Những gì tôi đang tìm kiếm để có được một cái gì đó như thế này:.
Month Orders
----- ------
January 10
February 7
March 0
April 12
May 0
June 5
... nhưng truy vấn của tôi bỏ qua một hàng cho tháng Ba và tháng Năm tôi đã thử COALESCE(COUNT(OrderNumber), 0)
và ISNULL(COUNT(OrderNumber), 0)
nhưng tôi khá chắc chắn nhóm là ca bằng cách đó không làm việc.
Có vẻ như 'OrderTable' không có hồ sơ cho tháng ba hay tháng, vì vậy việc lựa chọn từ bảng này một mình không thể trở về Kết quả là những tháng đó. Các work-around có thể có: Nếu cơ sở dữ liệu của bạn có một bảng tổng thể các ngày bạn có thể tận dụng nó, hoặc bạn có thể tạo ra bảng ngày của riêng bạn khi đang bay. –
Giống như @andyholaday đã nói - tạo bảng tra cứu với tháng 1 ... Tháng 12 và tham gia lại, và bạn sẽ nhận được những tháng còn thiếu. – kd7