0

私は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つのテーブルを最適に結合するロジックや方法がわかりません。

4

2 に答える 2