我的最终目标是有一个看起来像这样的表:
Maturity Band AAA AA A A- BBB+ BBB- BB+ BB Total
Less Than 1 yr 2.63% 5% 2% 9.63%
1 to 5 yrs 5% 5% 10%
5 to 10 yrs 5.00% 5% 10%
10 to 20 yrs 2% 2%
More than 20 yrs 10% 6% 1% 17%
Total 17.63% 5% 5% 2% 7% 5% 6% 1% 48.63%
我创建的过程(@Worktable)中的表如下所示:
PortfolioID IssueName SandPRating SandPRatingSort MaturityBand MaturitySort
XXXXX Bond1 AAA 1 Less than 1 yr 1
XXXXX Bond2 AAA 1 Less than 1 yr 1
XXXXX Bond3 AA- 7 5 to 10 yrs 3
XXXXX Bond4 BBB+ 8 1 to 5 yrs 2
etc.......
SandPRatingSort 以 1 为最高排序评级,成熟度排序也是如此。
我的问题是我正在努力在我的程序中将表格编码为上述格式(对不起,如果这看起来很容易,但我对此比较陌生)。我可以按 MaturityBand 对其进行分组,但我如何将其按正确的顺序排列,以及如何以评级作为标题来实现百分比?顺便说一下,百分比是具有评级的债券数量占投资组合持有的所有债券的百分比。
到目前为止,我得到的最好的是这个支点:
SELECT MaturityBand, [AAA],[AA+],[AA],[AA-],[A+],[A],[A-],[BBB+],[BBB],[BBB-],[BB+],[BB],[BB-],[B+],[B],[B-],[CCC+],[CCC],[CCC-],[CC],[C],[DDD],[DD],[D],[N.R.],[N.A.],[WR]
FROM
(
SELECT
MaturityBand
,SandPRating
FROM @Worktable
WHERE SandPRating IS NOT NULL
GROUP BY MaturityBand, SandPRating, MaturitySort, SandPSort
) AS source
PIVOT
(
COUNT(SandPRating)
FOR SandPRating IN ([AAA],[AA+],[AA],[AA-],[A+],[A],[A-],[BBB+],[BBB],[BBB-],[BB+],[BB],[BB-],[B+],[B],[B-],[CCC+],[CCC],[CCC-],[CC],[C],[DDD],[DD],[D],[N.R.],[N.A.],[WR])
) AS pvt
枢轴没有做我想做的事。我如何获得百分比?我怎样才能得到列和行的总计?此外,枢轴中的计数仅返回 1,我怎样才能得到它来计算每列的评分数,而不必对工作表进行大量的返工?
对正确方向的一点或一些指导将不胜感激。
谢谢