クエリを作成しましたが、結果を次のようにしたいと思います。
Reporting Date Fund AssetClass %
31/10/2012 1 Equity 10
31/10/2012 1 Bond 40
31/10/2012 1 Cash 40
31/10/2012 1 Balanced 10
31/10/2012 1 Other 0
上記の問題は、%が0であり、データがないため明らかに表示されないことです。しかし、私はそれを見せたいです。
したがって、最善の解決策は、すべてのアセットクラスを含む一時テーブルを作成し、ワークテーブルからそのテーブルにRIGHT OUTER JOINして、データがない行にデータを入力することだと思いました。コードは次のとおりです。
SELECT
ReportingDate
, PortfolioID
, AC.AssetClass
, ROW_NUMBER() OVER (PARTITION BY PortfolioID ORDER BY SUM(Percentage) DESC) AS [Rank]
, CAST(SUM(Percentage) AS DECIMAL(22,1)) AS [Weight]
FROM @Worktable as WT
RIGHT OUTER JOIN @AssetClass AS AC
ON WT.AssetClass = AC.AssetClass
GROUP BY WT.ReportingDate, WT.PortfolioID, AC.AssetClass
ORDER BY [Weight] DESC
私の問題は、これが戻ると次のようになることです。
Reporting Date Fund AssetClass %
31/10/2012 1 Equity 10
31/10/2012 1 Bond 40
31/10/2012 1 Cash 40
31/10/2012 1 Balanced 10
NULL NULL Other NULL
このスクリプトでNULLにデータを入力するにはどうすればよいですか?これを行うための別のより良い方法が潜在的にありますか?