计算不同的价值
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 根据您的建议显示正确的结果。但是计数以某种方式显示结果,就好像没有添加过滤一样。
我必须做一个报告摘要 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 根据您的建议显示正确的结果。但是计数以某种方式显示结果,就好像没有添加过滤一样。