1
私は、すべての明確な範囲を得るために交差する日付範囲を含む2つのテーブルを持っています。つまり、テーブルの1つに境界線を持つすべての範囲です。日付範囲の外積
具体的には、製品価格と有効期限のテーブル、および有効期限のある変換係数があります。私は、結果として、特定の価格/ CONVERSION_FACTORの組み合わせの各インスタンスをしたいとしてから、それが有効であったときに:だからテーブルのたびに1が新しい日付に当たる
products:
product_id start_date end_date price_eur
1 2000-01-01 2000-12-31 100
1 2001-01-01 2002-12-31 150
conversion_factors:
start_date end_date dollar_to_eur
1970-01-01 2000-03-31 1.50
2000-04-01 2000-06-30 1.60
2000-07-01 2001-06-30 1.70
2001-07-01 2003-06-30 2.00
result:
product_id start_date end_date price_eur dollar_to_eur
1 2000-01-01 2000-03-31 100 1.50
1 2000-04-01 2000-06-30 100 1.60
1 2000-07-01 2000-12-31 100 1.70
1 2001-01-01 2001-06-30 150 1.70
1 2001-07-01 2002-12-31 150 2.00
、新しい行が返されます。その結果、最初の2行は最初の製品行の有効性を参照しますが、conversion_factos表では2つの間隔に分割されます。同様に、結果の第2および第3の行は、第2の変換係数行から来るが、製品行が異なる。
これを賢明な結合(PostgreSQL)で行う方法はありますか、またはPL/pgSQL関数を使用する必要がありますか?