Sql server 在SSRS 2012中,如何在堆叠图表中将总计显示为单独的条形图

Sql server 在SSRS 2012中,如何在堆叠图表中将总计显示为单独的条形图,sql-server,tsql,reporting-services,stacked-chart,Sql Server,Tsql,Reporting Services,Stacked Chart,如何在堆叠图表中将总计显示为单独的条形图? 我按新业务和更新分类。那么,我如何能有另一个顶部的酒吧,可以显示我的新业务和更新的美元总额? 诸如此类: 编辑: 下面是我的主要SELECT语句。我创造了 首先,我创建了“EQGrandTotal”作为另一种业务类型,然后我总结了按描述细分的所有保费类型 SELECT SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'New Business' AND Descri

如何在堆叠图表中将总计显示为单独的条形图? 我按新业务和更新分类。那么,我如何能有另一个顶部的酒吧,可以显示我的新业务和更新的美元总额? 诸如此类:

编辑:

下面是我的主要SELECT语句。我创造了 首先,我创建了“EQGrandTotal”作为另一种业务类型,然后我总结了按描述细分的所有保费类型

   SELECT   SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'New Business' AND Description = 'Bound'         THEN [Bound Premium] ELSE 0 END) as EQBoundNB,
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'New Business' AND Description = 'Lost'          THEN [LostPremium] ELSE 0 END) as EQLostNB,
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'New Business' AND Description = 'Not Taken Up'  THEN [NotTakenUpPremium] ELSE 0 END) as EQNtUpNB,
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'New Business' AND Description = 'Quoted'        THEN [QuotedPremium] ELSE 0 END) as EQQuotedNB,
                    /* Earthquake, Renewal, by Description */
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'Renewal' AND Description = 'Bound'          THEN [Bound Premium] ELSE 0 END) as EQBoundRN,
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'Renewal' AND Description = 'Lost'           THEN [LostPremium] ELSE 0 END) as EQLostRN,
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'Renewal' AND Description = 'Not Taken Up'   THEN [NotTakenUpPremium] ELSE 0 END) as EQNtUpRN,
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'Renewal' AND Description = 'Quoted'         THEN [QuotedPremium] ELSE 0 END) as EQQuotedRN,

                /* Wind, New Business, by Description */
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'New Business' AND Description = 'Bound'           THEN [Bound Premium] ELSE 0 END) as WindBoundNB,
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'New Business' AND Description = 'Lost'            THEN [LostPremium] ELSE 0 END) as WindLostNB,
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'New Business' AND Description = 'Not Taken Up'    THEN [NotTakenUpPremium] ELSE 0 END) as WindNtUpNB,
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'New Business' AND Description = 'Quoted'          THEN [QuotedPremium] ELSE 0 END) as WindQuotedNB,
                /* Wind, Renewal, by Description */
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'Renewal' AND Description = 'Bound'        THEN [Bound Premium] ELSE 0 END) as WindBoundRN,
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'Renewal' AND Description = 'Lost'         THEN [LostPremium] ELSE 0 END) as WindLostRN,
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'Renewal' AND Description = 'Not Taken Up' THEN [NotTakenUpPremium] ELSE 0 END) as WindNtUpRN,
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'Renewal' AND Description = 'Quoted'       THEN [QuotedPremium] ELSE 0 END) as WindQuotedRN,
        CASE WHEN LineOfCoverage = 'Earthquake' THEN  'Earthquake' ELSE 'Wind' END as LineOfCoverage,
        'Earthquake' as Earthquake,
        'Wind' as Wind,
        BusinessType,
        Description,
        NULL as Total
FROM    cte_Quotes
GROUP BY LineOfCoverage,BusinessType,Description
UNION ALL 
SELECT 
        NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
        CASE WHEN LineOfCoverage = 'Earthquake' THEN  'Earthquake' ELSE 'Wind' END as LineOfCoverage,
        NULL,
        NULL,
        'EQGrandTotal' as BusinessType,
        --NULL,
        Description, -- description
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'New Business' AND Description = 'Bound'         THEN [Bound Premium] ELSE 0 END)+
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'New Business' AND Description = 'Lost'          THEN [LostPremium] ELSE 0 END) +
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'New Business' AND Description = 'Not Taken Up'  THEN [NotTakenUpPremium] ELSE 0 END)+
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'New Business' AND Description = 'Quoted'        THEN [QuotedPremium] ELSE 0 END) +
                    /* Earthquake, Renewal, by Description */
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'Renewal' AND Description = 'Bound'          THEN [Bound Premium] ELSE 0 END)+
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'Renewal' AND Description = 'Lost'           THEN [LostPremium] ELSE 0 END) +
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'Renewal' AND Description = 'Not Taken Up'   THEN [NotTakenUpPremium] ELSE 0 END)+
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'Renewal' AND Description = 'Quoted'         THEN [QuotedPremium] ELSE 0 END) as Total   
FROM    cte_Quotes
GROUP BY Description,LineOfCoverage,BusinessType
因此,我得到了另一个业务类型组,但线条是纯色的。 我的列合计表达式:

编辑2: @理查兹 删除了UNION ALL,而是添加了4个新列:

SELECT  SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'New Business' AND Description = 'Bound'         THEN [Bound Premium] ELSE 0 END) as EQBoundNB,
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'New Business' AND Description = 'Lost'          THEN [LostPremium] ELSE 0 END) as EQLostNB,
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'New Business' AND Description = 'Not Taken Up'  THEN [NotTakenUpPremium] ELSE 0 END) as EQNtUpNB,
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'New Business' AND Description = 'Quoted'        THEN [QuotedPremium] ELSE 0 END) as EQQuotedNB,
                    /* Earthquake, Renewal, by Description */
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'Renewal' AND Description = 'Bound'          THEN [Bound Premium] ELSE 0 END) as EQBoundRN,
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'Renewal' AND Description = 'Lost'           THEN [LostPremium] ELSE 0 END) as EQLostRN,
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'Renewal' AND Description = 'Not Taken Up'   THEN [NotTakenUpPremium] ELSE 0 END) as EQNtUpRN,
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'Renewal' AND Description = 'Quoted'         THEN [QuotedPremium] ELSE 0 END) as EQQuotedRN,

                /* Wind, New Business, by Description */
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'New Business' AND Description = 'Bound'           THEN [Bound Premium] ELSE 0 END) as WindBoundNB,
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'New Business' AND Description = 'Lost'            THEN [LostPremium] ELSE 0 END) as WindLostNB,
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'New Business' AND Description = 'Not Taken Up'    THEN [NotTakenUpPremium] ELSE 0 END) as WindNtUpNB,
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'New Business' AND Description = 'Quoted'          THEN [QuotedPremium] ELSE 0 END) as WindQuotedNB,
                /* Wind, Renewal, by Description */
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'Renewal' AND Description = 'Bound'        THEN [Bound Premium] ELSE 0 END) as WindBoundRN,
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'Renewal' AND Description = 'Lost'         THEN [LostPremium] ELSE 0 END) as WindLostRN,
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'Renewal' AND Description = 'Not Taken Up' THEN [NotTakenUpPremium] ELSE 0 END) as WindNtUpRN,
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'Renewal' AND Description = 'Quoted'       THEN [QuotedPremium] ELSE 0 END) as WindQuotedRN,
        CASE WHEN LineOfCoverage = 'Earthquake' THEN  'Earthquake' ELSE 'Wind' END as LineOfCoverage,
        'Earthquake' as Earthquake,
        'Wind' as Wind,
        BusinessType,
        Description,

/*  Test @Richards*/

        SUM(CASE WHEN  Description = 'Bound'        THEN [Bound Premium] ELSE 0 END) as TotalBound,
        SUM(CASE WHEN Description = 'Lost'          THEN [LostPremium] ELSE 0 END) as TotalLost,
        SUM(CASE WHEN  Description = 'Not Taken Up' THEN [NotTakenUpPremium] ELSE 0 END) as TotalNTU,
        SUM(CASE WHEN  Description = 'Quoted'       THEN [QuotedPremium] ELSE 0 END) as TotalQuoted
FROM    cte_Quotes
GROUP BY LineOfCoverage,BusinessType,Description
SSRS中的结果: 我在图表数据中添加了sumtottalbound作为一个值,似乎总数将出现在条形图的顶部

编辑3: 添加了UNION ALL语句,其中包含每个描述的总计

导致SSR:


正如我在最初的评论中所述,向SQL添加一个将汇总数据汇总到适当级别的联合使这成为可能

当该工具无法为您进行汇总时,这是编写报告的有用技巧

下面是一个来自我手头数据库的简单示例:

SELECT T.account_type_desc AS category, COUNT(1) AS cnt
FROM account A JOIN account_type T
ON A.account_type_key = T.account_type_key
GROUP BY T.account_type_desc

UNION ALL

SELECT 'Grand Total' AS category, COUNT(1) AS cnt
FROM account A

很高兴我能帮忙

嘿,奥列格!你能为你在上面使用的数据集添加SQL吗?您可能需要合并某些行,以汇总续订和新业务数据。我想看看SQL,看看这是否是一个可行的选择。@Richards。我编辑。对不起,如果有点乱,对不起。那只是我的测试之一。我编辑现在我看到了这一点,我想也许不需要工会。您是否考虑过在该选择的末尾添加一些新的列4,以汇总总数?绑定、丢失、NTU和报价各一份。每个都是一个总数,很像你为其他人所做的,但在组合中没有平均线和业务类型。这有意义吗?我写了一些东西,但是评论太多了,不能完全回答。我不得不模仿一些数据来证明这一点;“若你们认为这可能行得通的话,我会这么做的。”理查兹,我已经编辑了这个查询。我要试试SSR
SELECT  SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'New Business' AND Description = 'Bound'         THEN [Bound Premium] ELSE 0 END) as EQBoundNB,
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'New Business' AND Description = 'Lost'          THEN [LostPremium] ELSE 0 END) as EQLostNB,
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'New Business' AND Description = 'Not Taken Up'  THEN [NotTakenUpPremium] ELSE 0 END) as EQNtUpNB,
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'New Business' AND Description = 'Quoted'        THEN [QuotedPremium] ELSE 0 END) as EQQuotedNB,
                    /* Earthquake, Renewal, by Description */
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'Renewal' AND Description = 'Bound'          THEN [Bound Premium] ELSE 0 END) as EQBoundRN,
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'Renewal' AND Description = 'Lost'           THEN [LostPremium] ELSE 0 END) as EQLostRN,
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'Renewal' AND Description = 'Not Taken Up'   THEN [NotTakenUpPremium] ELSE 0 END) as EQNtUpRN,
        SUM(CASE WHEN LineOfCoverage = 'Earthquake' AND BusinessType = 'Renewal' AND Description = 'Quoted'         THEN [QuotedPremium] ELSE 0 END) as EQQuotedRN,

                /* Wind, New Business, by Description */
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'New Business' AND Description = 'Bound'           THEN [Bound Premium] ELSE 0 END) as WindBoundNB,
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'New Business' AND Description = 'Lost'            THEN [LostPremium] ELSE 0 END) as WindLostNB,
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'New Business' AND Description = 'Not Taken Up'    THEN [NotTakenUpPremium] ELSE 0 END) as WindNtUpNB,
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'New Business' AND Description = 'Quoted'          THEN [QuotedPremium] ELSE 0 END) as WindQuotedNB,
                /* Wind, Renewal, by Description */
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'Renewal' AND Description = 'Bound'        THEN [Bound Premium] ELSE 0 END) as WindBoundRN,
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'Renewal' AND Description = 'Lost'         THEN [LostPremium] ELSE 0 END) as WindLostRN,
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'Renewal' AND Description = 'Not Taken Up' THEN [NotTakenUpPremium] ELSE 0 END) as WindNtUpRN,
        SUM(CASE WHEN LineOfCoverage = 'Wind' AND BusinessType = 'Renewal' AND Description = 'Quoted'       THEN [QuotedPremium] ELSE 0 END) as WindQuotedRN,
        CASE WHEN LineOfCoverage = 'Earthquake' THEN  'Earthquake' ELSE 'Wind' END as LineOfCoverage,
        'Earthquake' as Earthquake,
        'Wind' as Wind,
        BusinessType,
        Description,
        NULL as TotalBound,
        NULL as TotalLost,
        NULL as TotalNTU,
        NULL as TotalQuoted

FROM    cte_Quotes
GROUP BY LineOfCoverage,BusinessType,Description
UNION ALL 
SELECT  NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
        LineOfCoverage,--CASE WHEN LineOfCoverage = 'Earthquake' THEN  'Earthquake' ELSE 'Wind' END as LineOfCoverage,
        'Earthquake' as Earthquake,
        'Wind' as Wind,
        'Grand Total' as BusinessType,
        --NULL,
        Description, -- description
        SUM(CASE WHEN  Description = 'Bound'        THEN [Bound Premium] ELSE 0 END) as TotalBound,
        SUM(CASE WHEN Description = 'Lost'          THEN [LostPremium] ELSE 0 END) as TotalLost,
        SUM(CASE WHEN  Description = 'Not Taken Up' THEN [NotTakenUpPremium] ELSE 0 END) as TotalNTU,
        SUM(CASE WHEN  Description = 'Quoted'       THEN [QuotedPremium] ELSE 0 END) as TotalQuoted
FROM    cte_Quotes
GROUP BY Description,LineOfCoverage,BusinessType    
SELECT T.account_type_desc AS category, COUNT(1) AS cnt
FROM account A JOIN account_type T
ON A.account_type_key = T.account_type_key
GROUP BY T.account_type_desc

UNION ALL

SELECT 'Grand Total' AS category, COUNT(1) AS cnt
FROM account A