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

Menghitung kolom secara otomatis dalam tabel sql berdasarkan data baris sebelumnya

Asumsi

1.Struktur tabel Anda seperti

Date | In Stock | Out Stock

2.Anda akan memasukkan Kolom Baru sebelum menghitung balance .

3.Tanggal adalah Primary Column (Unik + Bukan NULL )

Mengambil asumsi di atas:

Anda telah membuat SP jika Anda ingin menggunakan C#

1.Buat tabel sementara dan menetapkan Row Number menggunakan Peringkat()

select 
rank() OVER (ORDER BY [Date]) as [Rank],
t1.[Date],
t1.[in stock],
t1.[out stock]
--,t1.[in stock]-t1.[out stock] balance
into #temp1
from (your table name)
;

2.Sekarang Anda akan menggunakan temp table di atas untuk mendapatkan Saldo

WITH x AS
(
    SELECT 
        [Rank],
        [Date],
        [in stock],
        [out stock],
        bal=([in stock]-[out stock])
    FROM #temp1
    WHERE [Rank] = 1
    UNION ALL
    SELECT 
        y.[Rank],
        y.[Date],
        y.[in stock],
        y.[out stock],
        x.bal+(y.[in stock]-y.[out stock])
    FROM x INNER JOIN #temp1 AS y
    ON y.[Rank] = x.[Rank] + 1
)
SELECT 
    [Date],
    [in stock],
    [out stock],
    Balance = bal
FROM x
ORDER BY Date
OPTION (MAXRECURSION 10000);

Berikut adalah SQL Fiddle tempat Anda dapat memverifikasi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. datetime vs datetime2 di SQL Server:Apa Bedanya?

  2. Apakah KECUALI dieksekusi lebih cepat daripada GABUNG ketika kolom tabel sama?

  3. Pemeriksaan Cadangan SQL Server

  4. Pertanyaan Desain Basis Data - Kategori / Subkategori

  5. Bagaimana cara mengimpor spreadsheet Excel ke database SQL Server 2008R2?