Подсчитать отличительное значение

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

Что у меня сейчас есть:

001 - 1

002 - 1

001 - 1

Чего мне нужно добиться:

001 - 2

002 - 1

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

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

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

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

Какие-либо предложения?

2 ответа

Решение

Different_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

Спасибо, Ранджит! Код работает.

Я отредактировал код и добавил условие if, как указано ниже (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 отображает правильный результат в соответствии с вашими предложениями. Но счетчик каким-то образом отображает результат, как будто не было добавлено фильтрации.

Другие вопросы по тегам