2016-06-14 6 views
0

Мне нужно составить сводную таблицу отчета, которая будет отображать те же данные. Пробовал использовать xdoxslt: distinct_values ​​для группировки одного и того же значения, но он не работает и не отображает никаких ошибок.Count Distinct Value

То, что я прямо сейчас:

001 - 1

002 - 1

001 - 1

Что мне нужно достичь:

001 - 2

002 - 1

Чтобы устранить различные значения для 001 я использовал код согласно ниже

<?CwaProductCode[not(.=preceding::CwaProductCode)]?> 

Попробованных используя код согласно ниже для подсчета различных значений, но она не работает

<?count(xdoxslt:distinct_values(CwaProductCode))?> 

Любые предложения?

ответ

0

distinct_values ​​будет возвращать только выделенный пробел список отдельных значений. Для вашего требования вам нужно будет зацикливать каждое отдельное значение и подсчитать его экземпляр.

Я использовал этот XML:

<ROWSET> 
    <ROW> 
     <CwaProductCode>001</CwaProductCode> 
    </ROW> 
    <ROW> 
     <CwaProductCode>002</CwaProductCode> 
    </ROW> 
    <ROW> 
     <CwaProductCode>001</CwaProductCode> 
    </ROW> 
    <ROW> 
     <CwaProductCode>003</CwaProductCode> 
    </ROW> 
</ROWSET> 

И этот BIP код:

<?for-each-group:ROW;./CwaProductCode?> 
<?CwaProductCode?><?'-'?><?count(current-group()/.)?> 
<?end for-each-group?> 

И получил этот результат:

001-2 
002-1 
003-1 
0

Спасибо Ranjith! Код работает.

я редактировал код и добавил, если условие, согласно ниже (sumSub был объявлен в верхней части отчета)

<?for-each-group:ROW;./CwaProductCode?> 
<?if:CwaOrderType='UT Sales' and CwaChannel='Customer Portal'?> 
<?CwaProductCode[not(.=preceding::CwaProductCode)]?> 
<?count(current-group()/.)?> 
<?xdoxslt:set_variable($_XDOCTX, 'sumSub', xdoxslt:get_variable($_XDOCTX,'sumSub')+count(current-group()/.))?> 

CwaProductCode показывает правильный результат в соответствии с вашими предложениями. Но счет каким-то образом отображает результат, как если бы фильтрация не добавлялась.