我需要在SSIS中计算期初余额和期末余额。我将以下数据作为输入。
invoice_date amount
12/4/2016 4000
12/5/2016 5000
12/6/2016 7500
12/7/2016 5000
12/8/2016 8000
我想要输出如下:
Opening Balance 4000
Closing Balance 8000
有人可以帮助我在SSIS中实现这一目标吗?
注意:只需要使用转换。无需执行SQL任务或OLEDEB命令。
答案 0 :(得分:3)
在我的回答中,我将假设您的来源为OLEDB Source
且您的目的地为Flat File
您必须执行以下步骤:
Dataflow Task
(假设nema = DFT Import
) DFT Import
添加OLEDB Source
,Script Component
和FlatFile Destination
invoice_date
和amount
列标记为输入列Inputs and Outputs
标签,然后进行Output Buffer
异步Desc
的{{1}}和DT_STR
amount
的{{1}} 在您的脚本中编写以下代码:(Vb.net)
DT_I4
将输出列映射到目标列
注意:如果源列数据类型不是Dim MinDate, MaxDate As Date
Dim MinAmount, MaxAmount As Integer
Dim intRowCount As Integer = 0
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
intRowCount += 1
If intRowCount = 1 Then
MinDate = Row.invoicedate
MaxDate = Row.invoicedate
MinAmount = Row.amount
MaxAmount = Row.amount
Else
If Row.invoicedate < MinDate Then
MinDate = Row.invoicedate
MinAmount = Row.amount
ElseIf Row.invoicedate > MaxDate Then
MaxDate = Row.invoicedate
MaxAmount = Row.amount
End If
End If
End Sub
Public Overrides Sub PostExecute()
MyBase.PostExecute()
Output0Buffer.AddRow()
Output0Buffer.Desc = "Opening Balance"
Output0Buffer.amount = MinAmount
Output0Buffer.AddRow()
Output0Buffer.Desc = "Closing Balance"
Output0Buffer.amount = MaxAmount
End Sub
和datetime
,则必须在脚本中执行某些转换方法
其他方法
integer
以获取源表格Execute SQL Task
) 您可以使用包含User::intCount
和OLEDB Source
组件的数据流任务,而不是前两个步骤,并将rowcount结果存储到变量中
Rowcount
作为Readonly Variables 在脚本中编写以下代码
User::intCount