この例に使用するテーブル定義は、次のとおりです。
以下は、シーケンス化PTIテーブルの定義です。ここでは、2016年10月15日のタイム ゼロ指定であるDATE '2016-10-15'と、1時間のタイムバケット期間であるHOURS(1)が使用されています。
CREATE TABLE src_s ( TD_TIMEBUCKET BIGINT NOT NULL GENERATED SYSTEM TIMECOLUMN, TD_TIMECODE TIMESTAMP(1) NOT NULL GENERATED TIMECOLUMN, TD_SEQNO INT NOT NULL GENERATED TIMECOLUMN, c1 INTEGER, c2 INTEGER) PRIMARY TIME INDEX (TIMESTAMP(1), DATE '2016-10-15', HOURS(1), SEQUENCED(500));
このシーケンス化PTIテーブルtgt_nb_sの定義には、2016年10月15日のタイム ゼロ指定であるDATE '2016-10-15'が含まれていますが、タイムバケット期間はありません。
CREATE TABLE tgt_nb_s ( TD_TIMECODE TIMESTAMP(1) NOT NULL GENERATED TIMECOLUMN, TD_SEQNO INT NOT NULL GENERATED TIMECOLUMN, c1 INTEGER, c2 INTEGER) PRIMARY TIME INDEX (TIMESTAMP(1), DATE '2016-10-15', COLUMNS(c1), SEQUENCED(500));
この非PTIテーブルtgt_r2の定義には、列c1で構成されるプライマリ インデックスに加えて、timecodeおよびseqnoという名前の列が含まれています。
CREATE TABLE tgt_r2( timecode TIMESTAMP(1), seqno INTEGER, c1 INTEGER, c2 INTEGER) PRIMARY INDEX ( c1 );
この例では、タイムバケットを持つシーケンス化PTIテーブルsrc_sが、タイムバケットを持たないシーケンス化PTIテーブルtgt_nb_sにマージされます。
MERGE INTO tgt_nb_s AS tgt USING (SELECT TD_TIMECODE, TD_SEQNO, c1, c2 FROM src_s)AS src ON tgt.TD_TIMECODE = src.TD_TIMECODE AND tgt.TD_SEQNO = src.TD_SEQNO AND tgt.c1 = src.c1 WHEN MATCHED THEN UPDATE SET c2 = 70 WHEN NOT MATCHED THEN INSERT (src.TD_TIMECODE, src.TD_SEQNO, src.c1, src.c2);