计算不同的价值

Count Distinct Value

我必须做一个报告摘要 table,它将显示相同的数据。尝试使用 xdoxslt:distinct_values 对相同的值进行分组,但它不起作用,也不显示任何错误。

我现在拥有的:

001 - 1

002 - 1

001 - 1

我需要达到的目标:

001 - 2

002 - 1

为了消除 001 的不同值,我使用了下面的代码

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

尝试使用下面的代码来计算不同的值,但它不起作用

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

有什么建议吗?

distinct_values 只会 return 一个 space 分隔的不同值列表。根据您的要求,您需要遍历每个不同的值并计算其实例。

我用过这个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 根据您的建议显示正确的结果。但是计数以某种方式显示结果,就好像没有添加过滤一样。