毎週 Excel ファイルを作成する担当者に、「20151005」ではなく「月曜日」「火曜日」「水曜日」「木曜日」「金曜日」の 5 つの列の名前を付けてもらうことができない場合は、 "20151006"、"20151007"、"20151008"、"20151009" (たとえば、先週適用されたもの) の場合は、次の手順で実行できます。
手順:
- SSIS パッケージに文字列型の新しいグローバル ユーザー変数を作成し、「Day」などの名前を付けます。
- 派生列の式で、たとえば「20151005」を新しいユーザー変数に置き換えます。上から下にドラッグすると、@[user::Day] のようになります。
新しい変数「Day」を動的に設定するには、次の SQL を単一行の ResultSet で実行する SQL スクリプトを追加します。左側の結果セットで、変数名列の下にユーザー変数「Day」を追加します。結果名に値「0」を指定します。[一般] で、[ソースの種類] を [直接入力] に設定し、前の週の月曜日の日付値を yyyymmdd 形式で返す次の SQL を指定します。
declare @date as datetime
set @date = dateadd(week, datediff(week, 0, getdate()-7), 0)
select cast(year(@date) as char(4)) + right('00' + convert(varchar(2), month(@date)), 2) + right('00' + convert(varchar(2), day(@date)), 2)
ここで重要なのは、SSIS パッケージを次の週のいつでも実行でき、前の週の月曜日の情報が取得されることです。ただし、1 週間スキップすると、存在しない列を探します。月曜日の前週の日付を取得するために SQL スクリプトを適用する代わりに、ワークシートから最初の列を直接読み取ることですが、代わりに Visual Basic または C# を使用したスクリプト タスクを使用する必要があるため、これは複雑になります。エクセル参考。はるかに複雑ですが、実行できます。
お役に立てれば。