简体   繁体   English

在IBM Cognos 10 Report Studio中将TOP 5和其余全部汇总为“其他”

[英]TOP 5 and aggregate rest all to 'Others' in Cognos 10 report studio

I need to display top 5 clients (based on revenue) and aggregate rest all clients to just a single row 'Others' in a list report 我需要显示前5名客户(基于收入),并将其余所有客户汇总到列表报告中的“其他”一行中

C1 100 C1 100

C2 150 C2 150

C3 200 C3 200

C4 250 C4 250

C5 300 C5 300

Others 5000 其他5000

Let me know how I can achieve this. 让我知道如何实现这一目标。

Thank You! 谢谢!

What version of Cognos? 什么版本的Cognos? What RDBMS? 什么RDBMS?

I developed a solution for Cognos 11.0.7 and Microsoft SQL Server 2016. My solution uses two queries: Query1 gets the data, Query2 aggregates the data the way you want. 我为Cognos 11.0.7和Microsoft SQL Server 2016开发了一个解决方案。我的解决方案使用两个查询:Query1获取数据,Query2以所需的方式聚合数据。

In Query1, add a Data Item named Rank that uses the rank() function. 在Query1中,添加一个使用Rank()函数的名为Rank的数据项。 rank([Revenue])

Query2 uses all of the columns in Query1. Query2使用Query1中的所有列。

In Query2, change the Client column to 在Query2中,将“客户端”列更改为

case
    when [Query1].[Rank] < 6
        then [Query1].[Client]
    else 'Other'
end

Here's a code sample using the GO Sales (query) sample package. 这是使用GO Sales(查询)示例包的代码示例。 This was done in Cognos 11.0.7, but it should work in Cognos 10.xx if you change the version numbers in the first line of the report spec. 这是在Cognos 11.0.7中完成的,但是如果您在报表规格的第一行中更改版本号,则它应该在Cognos 10.xx中有效。

<report xmlns="http://developer.cognos.com/schemas/report/14.1/" useStyleVersion="11.4" expressionLocale="en-us">
    <drillBehavior/>
    <layouts>
        <layout>
            <reportPages>
                <page name="Page1">
                    <style>
                        <defaultStyles>
                            <defaultStyle refStyle="pg"/>
                        </defaultStyles>
                    </style>
                    <pageBody>
                        <style>
                            <defaultStyles>
                                <defaultStyle refStyle="pb"/>
                            </defaultStyles>
                        </style>
                        <contents>
                            <list horizontalPagination="true" refQuery="Query2" name="List2" rowsPerPage="1000">
                                <noDataHandler>
                                    <contents>
                                        <block>
                                            <contents>
                                                <textItem>
                                                    <dataSource>
                                                        <staticValue>No Data Available</staticValue>
                                                    </dataSource>
                                                    <style>
                                                        <CSS value="padding:10px 18px;"/>
                                                    </style>
                                                </textItem>
                                            </contents>
                                        </block>
                                    </contents>
                                </noDataHandler>
                                <style>
                                    <CSS value="border-collapse:collapse"/>
                                    <defaultStyles>
                                        <defaultStyle refStyle="ls"/>
                                    </defaultStyles>
                                </style>
                                <listColumns>
                                    <listColumn>
                                        <listColumnTitle>
                                            <style>
                                                <defaultStyles>
                                                    <defaultStyle refStyle="lt"/>
                                                </defaultStyles>
                                            </style>
                                            <contents>
                                                <textItem>
                                                    <dataSource>
                                                        <dataItemLabel refDataItem="City"/>
                                                    </dataSource>
                                                </textItem>
                                            </contents>
                                        </listColumnTitle>
                                        <listColumnBody>
                                            <style>
                                                <defaultStyles>
                                                    <defaultStyle refStyle="lc"/>
                                                </defaultStyles>
                                            </style>
                                            <contents>
                                                <textItem>
                                                    <dataSource>
                                                        <dataItemValue refDataItem="City"/>
                                                    </dataSource>
                                                </textItem>
                                            </contents>
                                        </listColumnBody>
                                    </listColumn>
                                    <listColumn>
                                        <listColumnTitle>
                                            <style>
                                                <defaultStyles>
                                                    <defaultStyle refStyle="lt"/>
                                                </defaultStyles>
                                            </style>
                                            <contents>
                                                <textItem>
                                                    <dataSource>
                                                        <dataItemLabel refDataItem="Quantity"/>
                                                    </dataSource>
                                                </textItem>
                                            </contents>
                                        </listColumnTitle>
                                        <listColumnBody>
                                            <style>
                                                <defaultStyles>
                                                    <defaultStyle refStyle="lm"/>
                                                </defaultStyles>
                                            </style>
                                            <contents>
                                                <textItem>
                                                    <dataSource>
                                                        <dataItemValue refDataItem="Quantity"/>
                                                    </dataSource>
                                                </textItem>
                                            </contents>
                                        </listColumnBody>
                                    </listColumn>
                                </listColumns>
                                <sortList>
                                    <sortItem refDataItem="rank"/>
                                </sortList>
                                <listOverallGroup>
                                    <listFooter>
                                        <listRows>
                                            <listRow>
                                                <rowCells>
                                                    <rowCell>
                                                        <contents>
                                                            <textItem>
                                                                <dataSource>
                                                                    <staticValue>Overall</staticValue>
                                                                </dataSource>
                                                            </textItem>
                                                            <textItem>
                                                                <dataSource>
                                                                    <staticValue> - </staticValue>
                                                                </dataSource>
                                                            </textItem>
                                                            <textItem>
                                                                <dataSource>
                                                                    <staticValue>Total</staticValue>
                                                                </dataSource>
                                                            </textItem>
                                                        </contents>
                                                        <style>
                                                            <defaultStyles>
                                                                <defaultStyle refStyle="if"/>
                                                            </defaultStyles>
                                                        </style>
                                                    </rowCell>
                                                    <rowCell>
                                                        <contents>
                                                            <textItem>
                                                                <dataSource>
                                                                    <dataItemValue refDataItem="Total(Quantity)"/>
                                                                </dataSource>
                                                            </textItem>
                                                        </contents>
                                                        <style>
                                                            <defaultStyles>
                                                                <defaultStyle refStyle="is"/>
                                                            </defaultStyles>
                                                        </style>
                                                    </rowCell>
                                                </rowCells>
                                            </listRow>
                                        </listRows>
                                    </listFooter>
                                </listOverallGroup>
                            </list>
                        </contents>
                    </pageBody>
                </page>
            </reportPages>
        </layout>
    </layouts>
    <XMLAttributes>
        <XMLAttribute output="no" name="RS_CreateExtendedDataItems" value="true"/>
        <XMLAttribute output="no" name="RS_modelModificationTime" value="2013-01-08T15:30:33.117Z"/>
        <XMLAttribute output="no" name="listSeparator" value=","/>
    </XMLAttributes>
    <modelPath>/content/folder[@name=&apos;Samples&apos;]/folder[@name=&apos;Models&apos;]/package[@name=&apos;GO Sales (query)&apos;]/model[@name=&apos;model&apos;]</modelPath>
    <queries>
        <query name="Query1">
            <source>
                <model/>
            </source>
            <selection>
                <dataItem aggregate="none" rollupAggregate="none" name="City">
                    <expression>[Sales (query)].[Branch].[City]</expression>
                    <XMLAttributes>
                        <XMLAttribute output="no" name="RS_dataType" value="3"/>
                        <XMLAttribute output="no" name="RS_dataUsage" value="attribute"/>
                    </XMLAttributes>
                </dataItem>
                <dataItem aggregate="total" name="Quantity">
                    <expression>[Sales (query)].[Sales].[Quantity]</expression>
                    <XMLAttributes>
                        <XMLAttribute output="no" name="RS_dataType" value="1"/>
                        <XMLAttribute output="no" name="RS_dataUsage" value="fact"/>
                    </XMLAttributes>
                </dataItem>
                <dataItem name="rank">
                    <expression>rank([Quantity])</expression>
                </dataItem>
                <dataItemListSummary refDataItem="Quantity" aggregateMethod="total" name="Total(Quantity)"/>
            </selection>
        </query>
        <query name="Query2">
            <source>
                <queryRef refQuery="Query1"/>
            </source>
            <selection>
                <dataItem aggregate="none" rollupAggregate="none" name="City">
                    <expression>case
    when [Query1].[rank] &lt; 6
        then [Query1].[City]
    else &apos;Other&apos;
end</expression>
                </dataItem>
                <dataItem aggregate="total" name="Quantity">
                    <expression>[Query1].[Quantity]</expression>
                </dataItem>
                <dataItem name="rank">
                    <expression>[Query1].[rank]</expression>
                </dataItem>
                <dataItemListSummary refDataItem="Quantity" aggregateMethod="total" name="Total(Quantity)"/>
            </selection>
        </query>
    </queries>
</report>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM