Так что я должен сделать отчет, который будет отображать и считать отчетливо CwaProductCode на основе CwaChannel и CwaOrderType.count dictentlyly group in xml bi publisher
Heres мой XML:
<OrderEntry-Orders>
<CwaChannel>Customer Portal</CwaChannel>
<CwaOrderType>UT Sales</CwaOrderType>
<ListOfOrderEntry-LineItems>
<OrderEntry-LineItems>
<CwaLineTotalAmount2>1000</CwaLineTotalAmount2>
<CwaProductCode>001</CwaProductCode>
</OrderEntry-LineItems>
<OrderEntry-LineItems>
<CwaLineTotalAmount2>1000</CwaLineTotalAmount2>
<CwaProductCode>005</CwaProductCode>
</OrderEntry-LineItems>
</ListOfOrderEntry-LineItems>
</OrderEntry-Orders>
<OrderEntry-Orders>
<CwaChannel>Customer Portal</CwaChannel>
<CwaOrderType>UT Sales</CwaOrderType>
<ListOfOrderEntry-LineItems>
<OrderEntry-LineItems>
<CwaLineTotalAmount2>1000</CwaLineTotalAmount2>
<CwaProductCode>005</CwaProductCode>
</OrderEntry-LineItems>
</ListOfOrderEntry-LineItems>
</OrderEntry-Orders>
<OrderEntry-Orders>
<CwaChannel>Customer Portal</CwaChannel>
<CwaOrderType>UT Redemption</CwaOrderType>
<ListOfOrderEntry-LineItems>
<OrderEntry-LineItems>
<CwaLineTotalAmount2>1000</CwaLineTotalAmount2>
<CwaProductCode>005</CwaProductCode>
</OrderEntry-LineItems>
</ListOfOrderEntry-LineItems>
</OrderEntry-Orders>
Heres мой BIP код:
<?for-each-group: OrderEntry-LineItems; CwaProductCode?>
<?if:../../CwaOrderType='UT Sales' and ../../CwaChannel='Customer Portal'?>
<?for-each: current-group()?>
<?CwaProductCode?>
<?xdoxslt:set_variable($_XDOCTX, 'countFund', xdoxslt:get_variable($_XDOCTX, 'countFund')+1)?>
<?xdoxslt:set_variable($_XDOCTX, 'TotalCount', xdoxslt:get_variable($_XDOCTX, 'TotalCount')+1)?>
<?xdoxslt:get_variable($_XDOCTX, 'countFund')?>
<?xdoxslt:set_variable($_XDOCTX, 'countFund', 0)?>
<?end if?>
<?end for-each-group?>
<?xdoxslt:get_variable($_XDOCTX, 'TotalCount')?>
Но результат вышел, как если бы не было, если условие. Например, CwaProductCode отобразит правильный результат, но он будет считать все в целом, как если бы фильтрация вообще отсутствовала.
Не знаете, где пошло не так.
Спасибо @RanjithR! Попробовал немного модифицировать код для достижения результата 001 - 2 005 - 2 но я нахожусь в тупике. Какие-либо предложения? – Yan
For-each-group: OrderEntry-LineItems [../../ CwaOrderType = 'UT Sales' и ../../CwaChannel='Customer Portal ']; CwaProductCode?> CwaProductCode?> Count (current-group() /.)?> Xdoxslt: set_variable ($ _ XDOCTX, 'TotalCount', xdoxslt: get_variable ($ _ XDOCTX, 'TotalCount') + count (current-group() /.))?> end for-each-group?> xdoxslt: get_variable ($ _ XDOCTX, 'TotalCount')?> –
Привет @RanjithR. Допустим, если бы я захотел сгруппировать 2 поля и подсчитать их на основе того же значения, что и эти 2 поля. For-each-group: OrderEntry-LineItem [../../ CwaOrderType = 'UT Switching' и ../../CwaChannel='Customer Portal ']; ./ CwaProductCode; ./ CwaSwitchInFundCode?> ><переменная @ InContext: код_продукта; CwaProductCode><переменная @ InContext:????????? SwitchIn; CwaSwitchInFundCode> <число (ток-группа() ./ [ ../ CwaProductCode = $ ProductCode] [../ CwaSwitchInFundCode = $ SwitchIn])?> Это правильный способ написать xpath? –
Yan