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

How to only load data with the highest value in one of the flat file column?

我有以下平面文件:

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 服务器数据库?

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

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

谢谢。

Whosebug 不是提供解决方案,而是解决 OP 已经尝试过的特定问题。请在发帖时牢记这一点。

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

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