我在使用的 SQL Server 中有一个查询MAX OVER Partition BY
。
MAX(Duration) OVER (PARTITION BY [Variable8]
ORDER BY [RouterCallKeySequenceNumber] ASC) AS MaxDuration
我想使用 SSIS 在 ETL 中实现这一点。
为了实现,我尝试实现类似于我们如何实现行号的实现。
我添加了一个 SORT 转换并按 Variable8 和 RouterCallKeySequenceNumber 排序,然后我添加了一个脚本转换。
string _variable8 = "";
int _max_duration;
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
_max_duration = Row.Duration;
if (Row.Variable8 != _variable8)
{
_max_duration = Row.Duration;
Row.maxduration = _max_duration;
_variable8 = Row.Variable8;
}
else
{
if (Row.Duration >= _max_duration)
{
Row.maxduration = _max_duration;
}
}
}
这是我拥有的数据 -
Variable8 RouterCallKeySequenceNumber Duration
153084-2490 0 265
153084-2490 1 161
153084-2490 2 197
我需要的解决方案如下 -
Variable8 RouterCallKeySequenceNumber Duration Max Duration
153084-2490 0 265 265
153084-2490 1 161 265
153084-2490 2 197 265
但这不会返回所需的值。
如果您能提供任何帮助,我将不胜感激。
谢谢