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

TSQL-2008 SUM(X) OVER (PARTISI ... ORDER BY CLAUSE)

INNER JOIN sederhana harus melakukan trik. Kecuali saya salah paham, yang Anda inginkan adalah total berjalan, benar?

Contoh ini membuat tabel dummy dengan data dummy, lalu menggunakan gabungan dalam untuk total yang berjalan. Dari sudut pandang kinerja, Common Table Expression kemungkinan lebih efisien. Tapi untuk kesederhanaan, bagian dalam bergabung menjadi preferensi saya.

/* Dummy table */    

create table testing1
(col1 int not null identity(1,1),
col2 varchar(5),
col3 int)


insert into testing1
values ('a', 10), ('a', 20), ('a', 30), ('b', 40), ('b', 50)

/* Running total example */

SELECT a.col1
           , a.col2
           , a.col3
           , SUM(b.col3) AS total

FROM testing1 a INNER JOIN testing1 b
     ON  a.col1 >= b.col1
     AND a.col2 = b.col2

GROUP BY a.col1, a.col2, a.col3
ORDER BY a.col1



/* Edit to include Output */
col1    col2    col3    total
1   a   10  10
2   a   20  30
3   a   30  60
4   b   40  40
5   b   50  90


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tambahkan Pengguna Windows ke SQL Server lokal dengan PowerShell

  2. SQL Server Setara dengan GROUP_CONCAT()

  3. Cara mengelompokkan waktu berdasarkan jam atau 10 menit

  4. Menjelajahi Operasi Indeks Online Tingkat Partisi di SQL Server 2014 CTP1

  5. SQL Server BCP Ekspor di mana koma di bidang SQL