SSIS - 计算期初余额和期末余额

时间:2017-03-22 07:38:35

标签: sql-server ssis etl ssis-2012 bids

我需要在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命令。

1 个答案:

答案 0 :(得分:3)

在我的回答中,我将假设您的来源为OLEDB Source且您的目的地为Flat File

您必须执行以下步骤:

  1. 添加另一个Dataflow Task (假设nema = DFT Import
  2. DFT Import添加OLEDB SourceScript ComponentFlatFile Destination
  3. 在脚本组件中将invoice_dateamount列标记为输入列
  4. enter image description here

    1. 在脚本中转到Inputs and Outputs标签,然后进行Output Buffer异步
    2. enter image description here

      1. 创建2个输出列*(类型为Desc的{​​{1}}和DT_STR amount的{​​{1}}
      2. enter image description here

        1. 在您的脚本中编写以下代码:(Vb.net)

          DT_I4
        2. 将输出列映射到目标列

        3. 注意:如果源列数据类型不是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,则必须在脚本中执行某些转换方法

          其他方法

          1. 添加integer以获取源表格
          2. 的行格式
          3. 将计数值(结果集)存储到SSIS变量(例如:Execute SQL Task
          4. 您可以使用包含User::intCountOLEDB Source组件的数据流任务,而不是前两个步骤,并将rowcount结果存储到变量中

            1. 按照第一种方法中的相同步骤进行操作
            2. 在脚本中添加Rowcount作为Readonly Variables
            3. 在脚本中编写以下代码

              User::intCount