日付を照会して別の日付を返すSQLファクト表があります。
テーブル構造は次のとおりです。
TABLE date_lookup
(
pk_date DATE,
plus1_months DATE,
plus2_months DATE,
plus3_months DATE
);
UNIQUE INDEX on date_lookup(pk_date);
2012年1月28日から2014年3月31日までの日付を含むロードされたファイル(パイプ区切り)があります。
以下は、ファイルをロードする例です。
01-28-2012|02-28-2012|03-28-2012|04-28-2012|
01-29-2012|02-29-2012|03-29-2012|04-29-2012|
01-30-2012|02-29-2012|03-30-2012|04-30-2012|
01-31-2012|02-29-2012|03-31-2012|04-30-2012|
...
03-31-2014|04-30-2014|05-31-2014|06-30-2014|
このファクトテーブルのルールは次のとおりです。
IF pk_date has more than 28 days in its month
AND plus1, plus2 or plus3_months only has 28, 29 or 30 days
THEN let plus1, plus2 or plus3 equal the last day of the following month.
sed
私の質問は次のとおりです。上記の規則に従って、ロードファイルに対して2014年3月31日以降にさらに日付を生成できますか?それともこれを行うプログラムを書く必要がありますか?
ベストアンサー1
この場合、これがsed
作業に適したツールであると思われます。awk
すでに慣れている場合は使用し、awk
そうでない場合はプログラムを書くことをお勧めします。
sed
私はあなたが言及したよりも厳しい要件でMSC / NASTRAN入力ファイルを使用して生成するエンジニアを知っていますが、彼はこれらのツールに精通しているので、ツールから出てくる秘密でawk
情報のないエラーメッセージはawk
彼を悩ませません。
を使用してこれを行うには、awk
入力を前処理して "-"と "|"文字を削除することをお勧めします。プログラムをawk
別のファイルに書き込みます。テキストフィールドの位置($1、$2、$3...)を使用し、出力用のSQL INSERT文を作成します。何度も試す必要があるので、できるだけ自動化してください。