私は2つのテーブルを持っています。(MS SQL Server 2012)
パフォーマンス
PortfolioID PortfolioCode Date MarketValue
1 Port1 12/31/12 100000
2 Port2 12/31/12 200000
3 Port3 12/31/12 300000
請求レート
RateID FromRate ToRate Rate
1 1 100000 1
2 100000.01 200000 0.99
3 2000000.01 300000 0.98
4 300000.01 400000 0.97
特定の日付のポートフォリオの MarketValue がレート テーブルの階層内のさまざまな値の範囲内にある場合、その MarketValue にそれぞれのレートを掛けたものであると言う CASE ステートメントのようなものを含むクエリを実行したいと考えています。(率欄はパーセント率を表します)
例えば
Port1 falls in the RateID 1 tier and is multiplied by 1 100,000 * 1% = 1000
Port2 falls in the RateID 2 tier and is multiplied by .99 200,000 * .99% = 1980
Port3 falls in the RateID 3 tier and is multiplied by .98 300,000 * .98% = 2940
私はこれらの「ケース」を約100件持っており、このようなことを考えていました
SELECT COALESCE(
CASE WHEN condition1 THEN calculation1 ELSE NULL END,
CASE WHEN condition2 THEN calculation2 ELSE NULL END,
etc...
)
しかし、これを達成するために2つのテーブルを最適に結合するロジックや方法がわかりません。