Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Mengapa kueri SQL Server berikut mengembalikan data 12 bulan dan bukan data 14 bulan?

Anda perlu mengelompokkan menurut bagian bulan dan tahun ad.xDate. Hanya ada dua belas bulan dalam satu tahun dan Anda akan melihat dua (14 - 2) bulan paling awal dari hasil Anda dengan total yang terlalu besar karena sebenarnya mewakili kombinasi dua bulan kalender.

Ini berfungsi dalam versi asli Anda karena ada lebih dari 14 hari dalam satu bulan. Jika Anda mencoba memperpanjang kueri lama itu lebih dari 31 hari (atau 28, 29, 30 selama beberapa bulan), Anda akan menemukan masalah yang sama lagi.

...
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. Cara memasukkan data ke SQL Server

  2. Haruskah saya mendesain tabel dengan kunci utama varchar atau int?

  3. SQL Server Buat Indeks Tampilan yang berisi berbeda atau dikelompokkan berdasarkan

  4. Panggil prosedur tersimpan dengan parameter bernilai tabel dari Java

  5. Kesalahan saat masuk ke SQL Server