Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tại sao truy vấn SQL Server sau trả về dữ liệu 12 tháng chứ không phải dữ liệu 14 tháng

Bạn cần phải nhóm theo cả tháng và năm của ad.xDate. Chỉ có mười hai tháng trong năm và bạn sẽ thấy kết quả của hai (14 - 2) tháng sớm nhất với tổng số quá lớn vì chúng thực sự đại diện cho sự kết hợp của hai tháng dương lịch.

Nó hoạt động trong phiên bản gốc của bạn vì có hơn 14 ngày trong bất kỳ tháng nào. Nếu bạn đã cố gắng kéo dài truy vấn cũ đó quá 31 ngày (hoặc 28, 29, 30 trong một số tháng) thì bạn lại tìm thấy cùng một vấn đề.

...
SELECT
    'playing' As activity,
    min(ad.xDate) As xDate, 
    Isnull(sum(t.TimePerDay), 0) As TimePerDay
FROM AllDates As ad Left Outer Join @test As t On ad.xDate = t.date
GROUP BY Year(ad.xDate), Month(ad.xDate) /* <--- change here */
ORDER BY xDate


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chọn giá trị từ trường XML trong SQL Server 2008

  2. Làm cách nào để tải tệp XML vào cơ sở dữ liệu bằng gói SSIS?

  3. Thiết lập cơ sở dữ liệu SQL Server cục bộ

  4. quyền tạo bảng bị từ chối trong cơ sở dữ liệu 'master'

  5. máy chủ sql:chọn các hàng mà tổng của phù hợp với một giá trị