3

2 つのテーブル A と B があります。それらの有効時間間隔に基づいてそれらを結合したいと考えています。

Aには製品品質(不定期)、Bには生産期間中の時間単位の設定があります。B の ValidFrom ValidTo の時間範囲に該当するすべての A の RefDates のパラメーター p1 と p2 を含む C のようなテーブルを作成する必要があります。

A
RefDate                 result
'11-Oct-2017 00:14:00'  17
'11-Oct-2017 00:14:00'  19
'11-Oct-2017 00:20:00'  5
'11-Oct-2017 01:30:00'  25
'11-Oct-2017 01:30:00'  18
'11-Oct-2017 03:03:00'  28


B
ValidFrom               ValidTo                 p1  p2
'11-Oct-2017 00:13:00'  '11-Oct-2017 01:12:59'  2   1
'11-Oct-2017 01:13:00'  '11-Oct-2017 02:12:59'  3   1
'11-Oct-2017 02:13:00'  '11-Oct-2017 03:12:59'  4   5
'11-Oct-2017 03:13:00'  '11-Oct-2017 04:12:59'  6   1
'11-Oct-2017 04:13:00'  '11-Oct-2017 05:12:59'  7   9

私はこのようなものを得る必要があります。

C
RefDate                 res p1  p2
'11-Oct-2017 00:14:00'  17  2   1
'11-Oct-2017 00:14:00'  19  2   1
'11-Oct-2017 00:20:00'  5   2   1
'11-Oct-2017 01:30:00'  25  3   1
'11-Oct-2017 01:30:00'  18  3   1
'11-Oct-2017 03:03:00'  28  4   5

私はSQLでこれを行う方法を知っており、MatLabで行ごとにこれを行う方法を理解したと思いますが、これは恐ろしく遅いです. データセットはかなり大きいです。私が見つけられなかったよりエレガントな方法があるに違いないと思います。

私のアプローチの多くが失敗した原因は、RefDate 列が一意ではないことです。

編集: 実際のテーブルには数千の行と数百の変数があります。

C (in reality)
RefDate                 res res2 ... res200 p1  p2 ... p1000
11-Oct-2017 00:14:00    17                  2   1
11-Oct-2017 00:14:00    19                  2   1
11-Oct-2017 00:20:00    5                   2   1
11-Oct-2017 01:30:00    25                  3   1
11-Oct-2017 01:30:00    18                  3   1
11-Oct-2017 03:03:00    28                  4   5
4

2 に答える 2