2016-06-16 4 views
0

CwaChannelとCwaOrderTypeに基づいてCwaProductCodeを明示的に表示してカウントするレポートを作成する必要があります。xmlのbi発行者のグループによって独断でカウント

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は正しい結果を表示しますが、フィルタリングがまったくなかったかのようにすべてをカウントします。

どこが間違っているかわかりません。

答えて

0

一度グループバイを行うと、そのグループの上にあるいずれかの親にアクセスすると、あいまいなデータが返されます。これは、常に最初の「OrderEntry-Orders」ノードを指し示すことがあります。 xmlの要素の順序を変更すると、これを見ることができます。あなたの要件がCwaOrderType =「UT販売」を持っていると.CwaChannel =「カスタマーポータル」のみ「のOrderEntry-のLineItems」のノードグループにある場合

、あなたは右のようにグループ分けして、そのフィルタを与えることができます。

<?for-each-group: OrderEntry-LineItems[../../CwaOrderType='UT Sales' and ../../CwaChannel='Customer Portal']; CwaProductCode?> 

このコードを試してみてください。

001 
1 
1 
005 
1 
005 
1 
3 

<?for-each-group: OrderEntry-LineItems[../../CwaOrderType='UT Sales' and ../../CwaChannel='Customer Portal']; CwaProductCode?> 
<?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 for-each-group?> 
<?xdoxslt:get_variable($_XDOCTX, 'TotalCount')?> 

は、この結果を与えます0

<?for-each-group: OrderEntry-LineItems[../../CwaOrderType='UT Sales' and ../../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')?> 

001 
1 
005 
2 
3 
+0

おかげ@RanjithRを与えます!コードを少し調整して、出力を達成しようとしましたが、私は枯れたところです。 001 - 2 005 - 2 です。助言がありますか? – Yan

+0

<?for-each-group:OrderEntry-LineItems [../../ CwaOrderType = 'UT Sales'および../../CwaChannel='Customer Portal ']; CakeProductCode?> <?CwaProductCode?> <?count(current-group()/。)?> <?xdoxslt:set_variable($ _ XDOCTX、 'TotalCount'、xdoxslt:get_variable($ _ XDOCTX、 'TotalCount')+ (現在のグループ()/))?> <?end for-each-group?> <?xdoxslt:get_variable($ _ XDOCTX、 'TotalCount')?> –

+0

こんにちは@RanjithR。 2つのフィールドをグループ化して、2つのフィールドと同じ値に基づいて数えたいとしたらどうなるでしょうか? <?for-each-group:OrderEntry-LineItem [../../ CwaOrderType = 'UT Switching' and ../../CwaChannel='Customer Portal ']; ./ CwaProductCode; ./ CwaSwitchInFundCode?> ><変数の@ incontext:製品コード; CwaProductCode><変数の@ incontext:??????????SwitchIn; CwaSwitchInFundCode> <カウント(現在のグループ()./ [ ../CwaProductCode = $ ProductCode] [../CwaSwitchInFundCode = $ SwitchIn])?> xpathを書く正しい方法ですか? – Yan

関連する問題