根据每个员工数据打印所有员工的总薪水

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

我的输入是

empid salary
10   1000
20   2000
30   3000
40   5000

数据存储9.1中的所需输出是

empid   salary   totalsal
10      1000     11000
20      2000     11000
30      3000     11000
40      5000     11000

我找到的解决方案如下图所示。我的问题是有没有简单的方法来实现这个理想的结果,因为我无法想到任何结果。感谢您花时间阅读本文

Solution

datastage
2个回答
0
投票

这是典型的fork连接示例。您将数据分叉以获取聚合并将其连接回原始数据。这也是在SQL中使用子选择的方式。另一种选择是带环路的变压器。你问的是一个简单的方法 - 那么什么是“简单”?变压器只需要一个阶段,而你需要更多,但另一方面,这可能更清晰,因此更容易。

一个简短的解释如何通过变压器级中的循环来完成。

  1. 使用SaveInputRecord()存储组的数据
  2. 汇总薪水(适用于团体)
  3. 当LastRowInGroup()为true时,使用GetSavedInputRecord()检索存储的行

如果没有分组内容,甚至可以对整个数据进行操作。


0
投票

在这里你可以使用变压器(注意你在变压器中启用顺序访问。否则分区将计算错误的值)。所以现在保留一个阶段变量(比方说svarTotSal),它将为每条记录加起来。然后简单地在变换器输出中使用TOTAL_SALARY对字段进行delcare,并在派生中给出svarTotSal。那样做。

谢谢Saurabh

© www.soinside.com 2019 - 2024. All rights reserved.