Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL:Tích lũy cột &Tổng trên Hàng

Hai mục:1) Phản ứng của Gordon hầu như được phát hiện ngoại trừ Cấp độ =0. Phải là Cấp =1

2) Tôi không tin rằng hàng cuối cùng trong kết quả mong muốn của bạn là chính xác, tôi nghĩ rằng bạn đã tắt trước 10. Nếu tôi không đúng, hãy cho tôi biết và tôi sẽ truy cập lại hàng này.

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;

Trả lại

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. Win32Exception (0x80004005):Hoạt động chờ đã hết thời gian

  2. Cách khắc phục “Tùy chọn cấu hình‘ Agent XPs ’không tồn tại” trong SQL Server (T-SQL)

  3. Biểu thức chính quy để xác thực tên bảng SQL Server

  4. Cách chèn hàng trong Bảng SQL Server bằng cách chỉnh sửa GUI hàng bảng - Hướng dẫn SQL Server / TSQL Phần 101

  5. Truyền tham số cho SQL là gì và tại sao tôi cần nó?