我有一个动态数据集,可以从今天和一年前返回数据。
如何透过Description
NetWrittenPremium
我知道如何执行静态数据透视,但在这种情况下我会怎么做呢。
;with cte_TopClasses
AS (
SELECT
b.MonthNum,
b.YearNum,
GovClassCode + ' - ' + dda.GovClassDesc as Description,
ISNULL(SUM(Premium),0) as NetWrittenPremium
FROM tblCalendar b
LEFT JOIN ProductionReportMetrics prm ON b.YearNum = Year(prm.EffectiveDate) AND b.MonthNum=Month(prm.EffectiveDate) AND CompanyLine = 'Arch Insurance Company'
LEFT JOIN [dbo].[Dynamic_Data_ArchWC] dda ON prm.QuoteGUID = dda.QuoteGuid
WHERE
( b.YearNum = YEAR(GETDATE())-1 and b.MonthNum >= MONTH(GETDATE())+1 ) OR
( b.YearNum = YEAR(GETDATE()) and b.MonthNum <= MONTH(GETDATE()) )
GROUP BY b.YearNum ,
b.MonthNum,
GovClassCode,
dda.GovClassDesc
)
--here I want to pivot it
select *
from cte_TopClasses
目前的结果是128条记录。
理想的结果就是这样:
答案 0 :(得分:0)
嗯取决于许多事情是什么是最佳解决方案。
如果每个描述都有相同的月份,您可以执行以下操作:
SELECT TOP 12 * @NumberOfDescriptionsToReturn
MonthNum
, YearNum
, Description
, NetWrittenPremium
, SUM(NetWrittenPremium) OVER (PARTITION BY Description) Total
FROM #T1
ORDER BY 5 DESC
然后在SSRS中,将RowGroup设置为Description并将ColumnGroup设置为您的月份(我不相信您需要从当前表格PIVOT
到所需的报告)。您还可以将查询中的总计用作总列。
如果他们没有所有日期,您可以强制他们在不同的日期执行CROSS JOIN
到不同的描述表,然后再加入其余的表格。