0

我在使用的 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

但这不会返回所需的值。

如果您能提供任何帮助,我将不胜感激。

谢谢

4

0 回答 0