Tôi đang cố gắng để trở lại một số kết quả trải rộng trên một cán 12 tháng thời gian ví dụ:SQL Kết quả nhóm theo tháng
MONTH IN OUT
January 210 191
February 200 111
March 132 141
April 112 141
May 191 188
etc...
Làm thế nào để truyền bá các kết quả trên một phạm vi ngày, Populating cột đầu tiên với tháng Tên?
TRÊN MSSQL nó sẽ là một cái gì đó như:
SELECT COUNT(problem.problem_type = 'IN') AS IN,
COUNT(problem.problem_type = 'OUT') AS OUT,
DATEPART(year, DateTime) as Year,
DATEPART(month, DateTime) as Month
FROM problem
WHERE (DateTime >= dbo.FormatDateTime('2010-01-01'))
AND
(DateTime < dbo.FormatDateTime('2010-01-31'))
GROUP BY DATEPART(year, DateTime),
DATEPART(month, DateTime);
Nhưng điều này là chống lại một cơ sở dữ liệu Oracle để DATEPART và DateTime không có sẵn.
bảng Vấn đề của tôi là khoảng:
problem_ID Problem_type IN_Date OUT_Date
1 IN 2010-01-23 16:34:29.0 2010-02-29 13:06:28.0
2 IN 2010-01-27 12:34:29.0 2010-01-29 12:01:28.0
3 OUT 2010-02-13 13:24:29.0 2010-09-29 15:04:28.0
4 OUT 2010-02-15 16:31:29.0 2010-07-29 11:03:28.0
đánh bại tôi bằng cách 30 giây! –
Tại sao chúng ta không thể sử dụng 'nhóm theo mon_year'? MySQL cho phép sử dụng tên cột bí danh trong mệnh đề nhóm. –
@Scott Chu: Oracle không cho phép sử dụng bí danh cột trong điều khoản Nhóm. Bạn phải khớp thủ công biểu thức được sử dụng trong cột. Mileage có thể thay đổi với các DB khác. – ZeroK