【问题标题】:TOP 5 and aggregate rest all to 'Others' in Cognos 10 report studioCognos 10 报告工作室中的 TOP 5 并将其余全部汇总到“其他”
【发布时间】:2018-09-26 00:46:14
【问题描述】:

我需要显示前 5 个客户(基于收入)并将其余所有客户汇总到列表报告中的一行“其他”

C1 100

C2 150

C3 200

C4 250

C5 300

其他 5000

让我知道如何实现这一目标。

谢谢!

【问题讨论】:

    标签: report cognos-10


    【解决方案1】:

    什么版本的 Cognos? 什么关系型数据库?

    我为 Cognos 11.0.7 和 Microsoft SQL Server 2016 开发了一个解决方案。我的解决方案使用两个查询:Query1 获取数据,Query2 以您想要的方式聚合数据。

    在 Query1 中,添加一个名为 Rank 的数据项,该数据项使用 rank() 函数。 rank([Revenue])

    Query2 使用 Query1 中的所有列。

    在 Query2 中,将 Client 列更改为

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

    这是一个使用 GO Sales(查询)示例包的代码示例。这是在 Cognos 11.0.7 中完成的,但如果您更改报告规范第一行中的版本号,它应该在 Cognos 10.x.x 中工作。

    <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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-29
      • 1970-01-01
      • 2013-01-08
      相关资源
      最近更新 更多