查找与最短支付期关联的支付开始日期
Find the Pay Begin Date associated with the minimum Pay Period
我正在使用 BI Publisher Desktop 并使用来自 Oracle PeopleSoft 的数据。
我需要做的:
找到最小值 E.PAY_PERIOD 并显示与此支付期相关的 E.PAY_BEGIN_DT。
我有一个看起来类似于此的 XML 文件:
<row rownumber="535">
<C.OTH_HRS>-100.0</C.OTH_HRS>
<C.OTH_EARNS>-1000.00</C.OTH_EARNS>
<C.ERNCD><![CDATA[WCB]]></C.ERNCD>
<D.DESCR><![CDATA[Workers Compensation]]></D.DESCR>
<B.PAY_END_DT>2017-08-29</B.PAY_END_DT>
<E.PAY_BEGIN_DT>2017-08-16</E.PAY_BEGIN_DT>
<E.PAY_END_DT>2017-08-29</E.PAY_END_DT>
<B.EMPLID><![CDATA[99999]]></B.EMPLID>
<B.NAME><![CDATA[LastName,FirstName]]></B.NAME>
<F.UNION_CD><![CDATA[7]]></F.UNION_CD>
<E.PAY_PERIOD><![CDATA[3]]></E.PAY_PERIOD>
</row>
<row rownumber="536">
<C.OTH_HRS>0</C.OTH_HRS>
<C.OTH_EARNS>-10.00</C.OTH_EARNS>
<C.ERNCD><![CDATA[052]]></C.ERNCD>
<D.DESCR><![CDATA[Adjustment to sick pay (15%)]]></D.DESCR>
<B.PAY_END_DT>2017-09-12</B.PAY_END_DT>
<E.PAY_BEGIN_DT>2017-08-30</E.PAY_BEGIN_DT>
<E.PAY_END_DT>2017-09-12</E.PAY_END_DT>
<B.EMPLID><![CDATA[99998]]></B.EMPLID>
<B.NAME><![CDATA[LastName,FirstName]]></B.NAME>
<F.UNION_CD><![CDATA[7]]></F.UNION_CD>
<E.PAY_PERIOD><![CDATA[1]]></E.PAY_PERIOD>
</row>
在我的 XML 文件中有 1333 行。第 1 到 535 行的 E.PAY_PERIOD 等于 3,第 536 到 1333 行的 E.PAY_PERIOD 等于 1。当 E.PAY_PERIOD 等于 3 时,B.PAY_BEGIN_DT 等于2017-08-16 第 1 到 535 行,当 E.PAY_PERIOD 等于 1 时,B.PAY_BEGIN_DT 等于 2017-08-30 第 536 到 1333 行。
我想做的是找到最小值 E.PAY_PERIOD,找到后显示相关的 B.PAY_BEGIN_DT。报告需要这个日期,我只需要显示一次。
这是我一直在使用的:
<?xdoxslt:set_variable($_XDOCTX, ‘minPayPeriod’, xdoxslt:minimum(E.PAY_PERIOD))?>
<?choose:?>
<?when:xdoxslt:get_variable($_XDOCTX, ‘minPayPeriod’)?>
minPayPeriod: <?xdoxslt:get_variable($_XDOCTX, ‘minPayPeriod’)?>
E.PAY_BEGIN_DT: <?E.PAY_BEGIN_DT?>
E.PAY_END_DT: <?E.PAY_END_DT?>
<?end when?>
<?end choose?>
这个输出是:
minPayPeriod: 1 <-- this is correct
E.PAY_BEGIN_DT: 2017-08-16 <-- I need this date to be 2017-08-30 since this is the date when E.PAY_PERIOD is 1.
E.PAY_END_DT: 2017-08-29 <-- I need this date to be 2017-09-12 since this is the date when E.PAY_PERIOD is 1.
此外,我如何判断 E.PAY_BEGIN_DT 和 E.PAY_END_DT 来自哪个行号。
我希望我已经正确解释了这一点。
感谢您的帮助。
托尼
获得最小值后,您必须在 XML 中搜索包含该值的节点,并打印其对应的日期。这是一些伪代码,我(还没有测试过)。
<?choose:?>
<?when:xdoxslt:get_variable($_XDOCTX, ‘minPayPeriod’)?>
minPayPeriod: <?xdoxslt:get_variable($_XDOCTX, ‘minPayPeriod’)?>
E.PAY_BEGIN_DT: <?row [E.PAY_PERIOD = xdoxslt:get_variable($_XDOCTX, ‘minPayPeriod’)]/[0]/E.PAY_BEGIN_DT?>
E.PAY_END_DT: <?row [E.PAY_PERIOD = xdoxslt:get_variable($_XDOCTX, ‘minPayPeriod’)]/[0]/E.PAY_END_DT?>
<?end when?>
<?end choose?>
/[0] 部分是搜索第一个匹配项,而不是打印所有匹配项。
我正在使用 BI Publisher Desktop 并使用来自 Oracle PeopleSoft 的数据。
我需要做的: 找到最小值 E.PAY_PERIOD 并显示与此支付期相关的 E.PAY_BEGIN_DT。
我有一个看起来类似于此的 XML 文件:
<row rownumber="535">
<C.OTH_HRS>-100.0</C.OTH_HRS>
<C.OTH_EARNS>-1000.00</C.OTH_EARNS>
<C.ERNCD><![CDATA[WCB]]></C.ERNCD>
<D.DESCR><![CDATA[Workers Compensation]]></D.DESCR>
<B.PAY_END_DT>2017-08-29</B.PAY_END_DT>
<E.PAY_BEGIN_DT>2017-08-16</E.PAY_BEGIN_DT>
<E.PAY_END_DT>2017-08-29</E.PAY_END_DT>
<B.EMPLID><![CDATA[99999]]></B.EMPLID>
<B.NAME><![CDATA[LastName,FirstName]]></B.NAME>
<F.UNION_CD><![CDATA[7]]></F.UNION_CD>
<E.PAY_PERIOD><![CDATA[3]]></E.PAY_PERIOD>
</row>
<row rownumber="536">
<C.OTH_HRS>0</C.OTH_HRS>
<C.OTH_EARNS>-10.00</C.OTH_EARNS>
<C.ERNCD><![CDATA[052]]></C.ERNCD>
<D.DESCR><![CDATA[Adjustment to sick pay (15%)]]></D.DESCR>
<B.PAY_END_DT>2017-09-12</B.PAY_END_DT>
<E.PAY_BEGIN_DT>2017-08-30</E.PAY_BEGIN_DT>
<E.PAY_END_DT>2017-09-12</E.PAY_END_DT>
<B.EMPLID><![CDATA[99998]]></B.EMPLID>
<B.NAME><![CDATA[LastName,FirstName]]></B.NAME>
<F.UNION_CD><![CDATA[7]]></F.UNION_CD>
<E.PAY_PERIOD><![CDATA[1]]></E.PAY_PERIOD>
</row>
在我的 XML 文件中有 1333 行。第 1 到 535 行的 E.PAY_PERIOD 等于 3,第 536 到 1333 行的 E.PAY_PERIOD 等于 1。当 E.PAY_PERIOD 等于 3 时,B.PAY_BEGIN_DT 等于2017-08-16 第 1 到 535 行,当 E.PAY_PERIOD 等于 1 时,B.PAY_BEGIN_DT 等于 2017-08-30 第 536 到 1333 行。
我想做的是找到最小值 E.PAY_PERIOD,找到后显示相关的 B.PAY_BEGIN_DT。报告需要这个日期,我只需要显示一次。
这是我一直在使用的:
<?xdoxslt:set_variable($_XDOCTX, ‘minPayPeriod’, xdoxslt:minimum(E.PAY_PERIOD))?>
<?choose:?>
<?when:xdoxslt:get_variable($_XDOCTX, ‘minPayPeriod’)?>
minPayPeriod: <?xdoxslt:get_variable($_XDOCTX, ‘minPayPeriod’)?>
E.PAY_BEGIN_DT: <?E.PAY_BEGIN_DT?>
E.PAY_END_DT: <?E.PAY_END_DT?>
<?end when?>
<?end choose?>
这个输出是:
minPayPeriod: 1 <-- this is correct
E.PAY_BEGIN_DT: 2017-08-16 <-- I need this date to be 2017-08-30 since this is the date when E.PAY_PERIOD is 1.
E.PAY_END_DT: 2017-08-29 <-- I need this date to be 2017-09-12 since this is the date when E.PAY_PERIOD is 1.
此外,我如何判断 E.PAY_BEGIN_DT 和 E.PAY_END_DT 来自哪个行号。
我希望我已经正确解释了这一点。
感谢您的帮助。
托尼
获得最小值后,您必须在 XML 中搜索包含该值的节点,并打印其对应的日期。这是一些伪代码,我(还没有测试过)。
<?choose:?>
<?when:xdoxslt:get_variable($_XDOCTX, ‘minPayPeriod’)?>
minPayPeriod: <?xdoxslt:get_variable($_XDOCTX, ‘minPayPeriod’)?>
E.PAY_BEGIN_DT: <?row [E.PAY_PERIOD = xdoxslt:get_variable($_XDOCTX, ‘minPayPeriod’)]/[0]/E.PAY_BEGIN_DT?>
E.PAY_END_DT: <?row [E.PAY_PERIOD = xdoxslt:get_variable($_XDOCTX, ‘minPayPeriod’)]/[0]/E.PAY_END_DT?>
<?end when?>
<?end choose?>
/[0] 部分是搜索第一个匹配项,而不是打印所有匹配项。