私の最終的な目標は、次のようなテーブルを持つことです。
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 のみを返します。これを取得して、ワークテーブルに再作業を行わずに各列の評価数を合計するにはどうすればよいですか?
正しい方向へのポイントまたはいくつかのガイダンスは非常に高く評価されます.
ありがとう