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

SQL:Kolom Akumulatif &Jumlah Seluruh Baris

Dua item:1) Respons Gordon benar-benar tepat kecuali untuk Level=0. Seharusnya Level=1

2) Saya tidak yakin baris terakhir dari hasil yang Anda inginkan sudah benar, saya pikir Anda meleset 10. Jika saya tidak benar, beri tahu saya dan saya akan mengunjunginya kembali.

Declare @Table table (Profile varchar(25),Level int,CHgt int,BHgt int, SHgt int, Z int)
Insert into @Table values
('ABCD1' , 1  , 15 , 11 , 50 , 0),
('ABCD1' , 2  , 15 , 11 , 70 , 0),
('ABCD1' , 3  , 15 , 11 , 70 , 0),
('ABCD2' , 1  , 15 , 11 , 60 , 0),
('ABCD2' , 2  , 15 , 11 , 80 , 0),
('ABCD2' , 3  , 15 , 11 , 80 , 0),
('ABCD3' , 1  , 15 , 11 , 40 , 0),
('ABCD3' , 2  , 15 , 11 , 60 , 0),
('ABCD3' , 3  , 15 , 11 , 60 , 0)

select A.Profile
      ,A.Level
      ,A.CHgt
      ,A.BHgt
      ,A.SHgt
      ,B.Bhgt2
      ,Shgt2 = case when Level = 1 then 0 else SHgt2 end
      ,Z     = CHgt + B.Bhgt2 + case when level = 1 then 0 else SHgt2 end 
From @Table A 
Cross Apply (Select Bhgt2 = sum(Bhgt)
                   ,SHgt2 = sum(SHgt)
              From  @Table B
              Where B.Profile = A.Profile and A.Level >= B.Level 
            ) B;

Pengembalian

Profile Level   CHgt    BHgt    SHgt    Bhgt2   Shgt2   Z
ABCD1   1       15      11      50      11      0       26
ABCD1   2       15      11      70      22      120     157
ABCD1   3       15      11      70      33      190     238
ABCD2   1       15      11      60      11      0       26
ABCD2   2       15      11      80      22      140     177
ABCD2   3       15      11      80      33      220     268
ABCD3   1       15      11      40      11      0       26
ABCD3   2       15      11      60      22      100     137
ABCD3   3       15      11      60      33      160     208


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JSON_MODIFY() Contoh di SQL Server (T-SQL)

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

  3. Permintaan untuk membuat daftar semua prosedur tersimpan

  4. Cara Mengganti String jika record NULL di T-SQL

  5. Offset Baris di SQL Server