2017-12-27 31 views
0

Oracle BI Desktop에서 Oracle PeopleSoft의 데이터를 사용하고 있습니다.최소 지불 기간과 관련된 지불 시작 날짜 찾기

내가해야 할 일 : 최소한의 E.PAY_PERIOD를 찾고이 지불 기간과 관련된 E.PAY_BEGIN_DT를 보여주십시오. 1333 개 행이 나의 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이 비슷한 모양의 파일이 있습니다. 1부터 535까지의 행은 E.PAY_PERIOD가 3이고 536부터 1333까지의 번호가 매겨진 행은 E.PAY_PERIOD가 1과 같습니다. E.PAY_PERIOD가 3이면 B.PAY_BEGIN_DT는 행 1의 경우 2017-08-16과 같습니다. 535로, E.PAY_PERIOD가 1 일 때 B.PAY_BEGIN_DT는 행 536부터 1333까지 2017-08-30과 같습니다.

내가하려는 것은 minimun 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이있는

내가 가진 일을하고 무슨이다 에서.

설명해 드리겠습니다.

도움 주셔서 감사합니다.

토니

답변

0

당신이 최소값을 얻으면, 그 값을 포함하는 노드의 XML을 검색하고 해당 날짜를 인쇄해야합니다. 여기에 약간의 pseducode가 있습니다. 나는 그것을 테스트하지 않았습니다.

<?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] 부분은 모든 일치 항목을 인쇄하는 대신 첫 번째 항목을 검색하는 것입니다.

+0

나는 이것을 사용하여 문제를 해결했다. 안타깝게도 PeopleSoft는 하위 템플릿에 데이터 소스를 연결하지 못하게하고 다른 솔루션을 조사해야했으며이 보고서는 시간 제약으로 보류되었습니다. 그러나 귀하의 의견에 진심으로 감사드립니다. 필자는이 보고서를 작성하는 동안 꽤 많이 배웠습니다. 피플 소프트가 아닌 내 컴퓨터에서 작동합니다. – Tony