在SQL Server中插入数据时,使用以前的列数据进行计算

时间:2017-08-21 21:17:35

标签: sql sql-server sql-server-2008

我正在尝试使用以下格式创建一个分期付款表

StartNumber = 1000
TotalYears = 3
PerMonth =  StartNumber - (TotalYears*12)

          Month1       Month2                   Month3                 Month4..
Year1     StartNumber  Year1Month1-PerMonth    Year1Month2-PerMonth
Year2      
Year3
Year4
....

这显示的是,根据我将构建年份行的年数,然后我将从Year1Month1中的总金额开始,然后是 Year1Month2我将使用PerMonth变量扣除Previous Column数据。

我正在考虑创建临时表并处理数据以填充它

Declare @Years int
Set @Years = 3

Declare @TotalUnrecoveredDollar decimal(8,3)
Set @TotalUnrecoveredDollar = 10000.3

Declare @UnrecoveredDollarPerMonth decimal(8,3)
Set @UnrecoveredDollarPerMonth = @TotalUnrecoveredDollar - (@Years * 12)

 IF OBJECT_ID('tempdb..#AmortizationTable') IS NOT NULL
  BEGIN
    DROP TABLE #AmortizationTable
  END

  CREATE TABLE #AmortizationTable
  (
    Month1 decimal(10,3),
    Month2 decimal(10,3),
    Month3 decimal(10,3),
    Month4 decimal(10,3),
    Month5 decimal(10,3),
    Month6 decimal(10,3),
    Month7 decimal(10,3),
    Month8 decimal(10,3),
    Month9 decimal(10,3),
    Month10 decimal(10,3),
    Month11 decimal(10,3),
    Month12 decimal(10,3)
  )

我的问题是,在表格中插入数据时,可以在使用某些数据启动第一个单元格时使用先前的单元格数据进行计算。

1 个答案:

答案 0 :(得分:1)

如果我理解,你有一个(@startnumber变量,@ PerMonth变量)并且所有字段都依赖于它们,所以你可以做类似的事情

insert into AmortizationTable(Month1, Month2, Month3, Month4, Month5
, Month6, Month7, Month8, Month9, Month10, Month11, Month12)

select @StartNumber , @StartNumber-@PerMonth, @StartNumber-(@PerMonth*2),@StartNumber-(@PerMonth*3),@StartNumber-(@PerMonth*4),@StartNumber-(@PerMonth*5)
,@StartNumber-(@PerMonth*6),@StartNumber-(@PerMonth*7),@StartNumber-(@PerMonth*8),@StartNumber-(@PerMonth*9),@StartNumber-(@PerMonth*10),@StartNumber-(@PerMonth*11)