Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Автоматично изчисляване на колони в sql таблица въз основа на данни от предишен ред

Успение

1. Структурата на вашата таблица е като

Date | In Stock | Out Stock

2. Ще вмъкнете Нови колони преди да изчислите balance .

3.Date е Primary Column (Уникален + не е NULL )

Като се вземат горните предположения:

Трябва да направитеSP ако искате да използвате в C#

1. Създайте временна таблица и присвоен Row Number използвайки Rank()

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. Сега ще използвате горната temp table за да получите Баланс

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);

Ето SQL Fiddle където можете да потвърдите.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Невалиден параметър за дължина, предаден на функцията LEFT или SUBSTRING

  2. Може ли SQL Server Pivot, без да знае получените имена на колони?

  3. Изключение 0x80040154, генерирано по време на изпълнение на прост ssis пакет в MS SQL 2008R2 среда

  4. Обхват на променливи, които са дефинирани в рамките на блок while в съхранени процедури - SQl сървър

  5. Изтриване на данни от зависими таблици