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

Cara mengelompokkan berdasarkan bulan dari bidang Tanggal menggunakan sql

Saya akan menggunakan ini:

SELECT  Closing_Date = DATEADD(MONTH, DATEDIFF(MONTH, 0, Closing_Date), 0), 
        Category,  
        COUNT(Status) TotalCount 
FROM    MyTable
WHERE   Closing_Date >= '2012-02-01' 
AND     Closing_Date <= '2012-12-31'
AND     Defect_Status1 IS NOT NULL
GROUP BY DATEADD(MONTH, DATEDIFF(MONTH, 0, Closing_Date), 0), Category;

Ini akan dikelompokkan berdasarkan yang pertama setiap bulan, jadi

`DATEADD(MONTH, DATEDIFF(MONTH, 0, '20130128'), 0)` 

akan memberikan '20130101' . Saya biasanya lebih suka metode ini karena menyimpan tanggal sebagai tanggal.

Atau Anda dapat menggunakan sesuatu seperti ini:

SELECT  Closing_Year = DATEPART(YEAR, Closing_Date),
        Closing_Month = DATEPART(MONTH, Closing_Date),
        Category,  
        COUNT(Status) TotalCount 
FROM    MyTable
WHERE   Closing_Date >= '2012-02-01' 
AND     Closing_Date <= '2012-12-31'
AND     Defect_Status1 IS NOT NULL
GROUP BY DATEPART(YEAR, Closing_Date), DATEPART(MONTH, Closing_Date), Category;

Itu benar-benar tergantung apa output yang Anda inginkan. (Tahun Penutupan tidak diperlukan dalam contoh Anda, tetapi jika rentang tanggal melintasi batas tahun mungkin saja).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana SHOWPLAN_XML Bekerja di SQL Server

  2. Pembaruan SQL permintaan baris top1

  3. Tes Kinerja MS SQL Server di Linux vs Windows untuk Menemukan Perbedaannya

  4. Menggunakan ROLLBACK Transaksi di SQL Server

  5. Bagaimana Anda bisa mewakili warisan dalam database?