【发布时间】:2018-09-26 00:46:14
【问题描述】:
我需要显示前 5 个客户(基于收入)并将其余所有客户汇总到列表报告中的一行“其他”
C1 100
C2 150
C3 200
C4 250
C5 300
其他 5000
让我知道如何实现这一目标。
谢谢!
【问题讨论】:
我需要显示前 5 个客户(基于收入)并将其余所有客户汇总到列表报告中的一行“其他”
C1 100
C2 150
C3 200
C4 250
C5 300
其他 5000
让我知道如何实现这一目标。
谢谢!
【问题讨论】:
什么版本的 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='Samples']/folder[@name='Models']/package[@name='GO Sales (query)']/model[@name='model']</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] < 6
then [Query1].[City]
else 'Other'
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>
【讨论】: