我对 SSIS 还是很陌生,而且总体上在 SQL 方面走得更远。我创建了一个数据流任务,它从表中提取与 UNION ALL 脚本匹配的记录并将它们转储到服务器上的 .CSV 文件中。然后,我添加了一个 FTP 任务,将文件上传到收件人,以便他们最终处理。转储数据的条件之一是表中的 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
任何帮助/方向表示赞赏。
谢谢,
杰夫