ТОП 5 и все остальные вместе с «Другими» в Cognos 10 report studio - PullRequest
0 голосов
/ 25 сентября 2018

Мне нужно отобразить 5 лучших клиентов (в зависимости от выручки) и объединить остальных клиентов в одну строку «Другие» в отчете списка

C1 100

C2 150

C3 200

C4 250

C5 300

Другие 5000

Дайте мне знать, как мне этого добиться.

Спасибо!

1 Ответ

0 голосов
/ 25 сентября 2018

Какая версия 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.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>
...