Sql server 在SSRS 2012中,如何在堆叠图表中将总计显示为单独的条形图
如何在堆叠图表中将总计显示为单独的条形图? 我按新业务和更新分类。那么,我如何能有另一个顶部的酒吧,可以显示我的新业务和更新的美元总额? 诸如此类: 编辑: 下面是我的主要SELECT语句。我创造了 首先,我创建了“EQGrandTotal”作为另一种业务类型,然后我总结了按描述细分的所有保费类型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 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