私はまだ SSIS に非常に慣れていないため、SQL 全般についてさらに詳しく学んでいます。UNION ALL スクリプトに一致するレコードをテーブルから取得し、サーバー上の .CSV ファイルにダンプするデータ フロー タスクを作成しました。次に、FTP タスクを追加して、ファイルを受信者にアップロードし、受信者側で処理できるようにしました。データをダンプする基準の 1 つは、テーブルの TransDate フィールドが空白で、StartDate フィールドが今日と等しいことです。4 つの StartDates と 4 つの TransDates があるため、UNION All を使用し、4 つのデータ セットのどれであるかに基づいて「行番号」を割り当てています。私が見逃しているのは、CSV にダンプされたレコードを確認し、その行に対応する TransDate を設定する方法です。
SELECT
CallLog.CallID as Ticket
, 1 as Line
, CallLog.CustID as Store#
, AcctNum as SoldTo
, CAST(BillStart01 as DATE) as BillStart
, Cast(BillEnd01 as DATE) as BillEnd
, CostSheet01 as BillAmount
, SKU01 as SKU
, Term01 as Terms
, CAST(EffDate01 as DATE) as EffStart
, CAST(EffDate02 as DATE) as EffEnd
FROM
CallLog, Detail, Subset
WHERE
(CallLog.CallID=Detail.CallID and CallLog.CallID=Subset.CallID)
AND CallType='Contract'
AND TransDate01 = ''
AND Cast(SentOps as Date) = CONVERT(date,GETDATE())
AND Month(RcvDate01) <= Month(GETDATE())
AND YEAR(RcvDate01) = YEAR(GetDate())
UNION ALL
SELECT CallLog.CallID as Ticket
, 2 as Line
, CallLog.CustID as Store#
, AcctNum as SoldTo
, CAST(BillStart 02 as DATE) as BillStart
, Cast(BillEnd02 as DATE) as BillEnd
, CostSheet02 as BillAmount
, SKU02 as SKU
, Term02 as Terms
, CAST(EffDate01 as DATE) as EffStart
, CAST(EffDate02 as DATE) as EffEnd
FROM
CallLog, Detail, Subset
WHERE
(CallLog.CallID=Detail.CallID and CallLog.CallID=Subset.CallID)
AND CallType='Contract'
AND TransDate02 = ''
AND Cast(SentOps as Date) = CONVERT(date,GETDATE())
AND Month(RcvDate02) <= Month(GETDATE())
AND YEAR(RcvDate02)=YEAR(GetDate())
UNION ALL
SELECT
CallLog.CallID as Ticket
, 3 as Line
, CallLog.CustID as Store#
, AcctNum as SoldTo
, CAST(BillStart 03 as DATE) as BillStart
, Cast(BillEnd03 as DATE) as BillEnd
, CostSheet03 as BillAmount
, SKU03 as SKU
, Term03 as Terms
, CAST(EffDate01 as DATE) as EffStart
, CAST(EffDate02 as DATE) as EffEnd
FROM
CallLog, Detail, Subset
WHERE
(CallLog.CallID=Detail.CallID and CallLog.CallID=Subset.CallID)
AND CallType='Contract'
AND TransDate03 = ''
AND Cast(SentOps as Date) = CONVERT(date,GETDATE())
AND Month(RcvDate03) <= Month(GETDATE())
AND YEAR(RcvDate03) = YEAR(GetDate())
UNION ALL
SELECT
CallLog.CallID as Ticket
, 4 as Line
, CallLog.CustID as Store#
, AcctNum as SoldTo
, CAST(BillStart 04 as DATE) as BillStart
, Cast(BillEnd04 as DATE) as BillEnd
, CostSheet04 as BillAmount
, SKU04 as SKU
, Term04 as Terms
, CAST(EffDate01 as DATE) as EffStart
, CAST(EffDate02 as DATE) as EffEnd
FROM
CallLog, Detail, Subset
WHERE
(CallLog.CallID=Detail.CallID AND CallLog.CallID=Subset.CallID)
AND CallType='Contract'
AND TransDate04 = ''
AND Cast(SentOps as Date) = CONVERT(date,GETDATE())
AND Month(RcvDate04)<=Month(GETDATE())
AND YEAR(RcvDate04)=YEAR(GetDate())
Order BY Ticket, Line
ヘルプ/指示をいただければ幸いです。
ありがとうございました、
ジェフ