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

Bagaimana cara mengelompokkan setiap minggu hingga enam minggu terakhir tanggal minggu di sql?

Saya membuat beberapa asumsi tentang data yang Anda posting.

Pertama, nilai yang Anda posting semuanya menyatakan tahun sebagai 2011 tetapi tanggal akhir akhir sebagai tajuk kolom tidak sesuai dengan 2011 , mereka adalah Sunday nilai untuk 2012 jadi saya mengubah data. Juga entri terakhir Early ASN 8/15/2011 12:00 , saya yakin seharusnya Late ASN entri jika tidak, total yang harus dicocokkan.

Untuk mendapatkan hasil, Anda ingin menerapkan PIVOT fungsi. Fungsi ini memungkinkan Anda untuk menggabungkan nilai dan kemudian mengonversinya menjadi kolom.

SET DATEFIRST 1 -- set this so the start of the week is Sunday
select InstanceType,
  sum([39]) as Sep_23, 
  sum([38]) as Sep_16, 
  sum([37]) as Sep_09, 
  sum([36]) as Sep_02, 
  sum([35]) as Aug_26, 
  sum([34]) as Aug_19
from
(
  select SPGI01_INSTANCE_TYPE_C as InstanceType,
    [39], [38], [37], [36], [35], [34]
  from
  (
    select SPGI01_INSTANCE_TYPE_C,
      DatePart(wk, SPGI01_CREATE_S) WeekNo,
      DATEADD(DAY, 7 -DATEPART(WEEKDAY,SPGI01_CREATE_S),SPGI01_CREATE_S) WeekEnd
    from table1
  ) x
  pivot
  (
    count(WeekEnd)
    for weekno in ([39], [38], [37], [36], [35], [34])
  ) p
) x1
group by InstanceType with rollup

Lihat SQL Fiddle dengan Demo




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kembalikan Daftar Peristiwa Pemicu Server di SQL Server

  2. Cara Menghapus Spasi Leading dan Trailing di SQL Server – TRIM()

  3. java.sql.SQLException:Tidak ditemukan driver yang cocok untuk jdbc:sqlserver

  4. Permintaan SQL Server Xml dengan beberapa ruang nama

  5. Konversi bilangan bulat ke hex dan hex ke integer