如何只在一个平面文件列中加载具有最高值的数据?

问题描述 投票:0回答:1

我有以下平面文件:

ColumnA              Quantity              BatchID
1                          10                            100
1                              10                           200
2                              20                           100
2                              20                           200
3                              30                           100
3                              30                           200

我怎样才能将最高BatchID的数据,即BatchID 200加载到我的SQL Server数据库?

在上面的示例中,我想将此数据加载到我的数据库:

ColumnA              Quantity              BatchID
1                              10                           200
2                              20                           200
3                              30                           200

谢谢。

sql-server csv ssis etl ssis-2012
1个回答
0
投票

StackOverflow不是提供解决方案,而是解决OP已经尝试过的具体问题。发布问题时请记住这一点。

话虽如此,有两种可能的解决方案:

  1. 将数据加载到临时表中,然后使用SELECT具有INSERT,该SELECT具有按MAX值选择的内联视图。必须使用内联视图,因为您不能在谓词中使用聚合,因此您必须运行单独的SELECT以获取最大值 - 或者您可以将其分解为公用表表达式(CTE)和SELECT。
  2. 在SSIS内进行在线执行。首先,根据BatchId和Quantity对列进行排序(我假设这是你排序的方式)。然后使用脚本任务将数量存储在变量中。现在,遍历每一行并将传入值与存储值进行比较:如果它大于,则可以设置一个名为IsMaxValue的新BIT列。从那里,执行条件性拆分以将具有IsMaxValue == 1的行发送到数据库。
© www.soinside.com 2019 - 2024. All rights reserved.