如何通过OLE DB Source将Excel Sheet A的日期字段添加到Sheet B中?
解决方案
问题根源
UNION ALL是用来纵向合并结构一致的数据集,你的需求是给Sheet B每行添加Sheet A的单个日期,属于横向关联,用UNION ALL逻辑完全不对,所以没效果。
方法1:OLE DB Source直接写SQL(最简单)
针对Sheet B的数据源,直接用SQL交叉连接Sheet A的I6单元格:
如果Sheet A的I6所在区域有列名Date:
SELECT B.Name, B.[phone number], A.Date FROM [Sheet B$] B, [Sheet A$I6:I6] A
如果没有列名,用默认列名F1:
SELECT B.Name, B.[phone number], A.F1 AS Date FROM [Sheet B$] B, [Sheet A$I6:I6] A
交叉连接会自动把Sheet A的单个日期匹配到Sheet B的每一行,正好符合需求。
方法2:SSIS变量+派生列(适合动态日期场景)
- 新建SSIS变量
@RegistrationDate,类型设为DateTime。 - 添加一个执行SQL任务,连接到Sheet A数据源,执行查询获取I6日期:
结果集选“单行”,把返回值映射到SELECT F1 FROM [Sheet A$I6:I6]@RegistrationDate。 - 在Sheet B的数据流后添加派生列转换,新增
Date列,表达式填入@[User::RegistrationDate],每行都会填充这个日期。
最终结果
执行后得到的数据集如下:
| Name | phone number | Date |
|---|---|---|
| Adam | 123345678 | 2012-09-01 |
| David | 123345678 | 2012-09-01 |
| Mary | 123345678 | 2012-09-01 |
内容的提问来源于stack exchange,提问作者DataRookie
相关产品推荐
相关产品推荐

