我正在使用merge语句加载数据,我必须计算并转换日期字段并加载到dest表中的varchar列
MERGE dbo.DestTable AS Target
USING (
SELECT ID,
MAX(CAST(CONVERT(date,dateadd(day, CAST(date as int),'1960-01-01'))AS VARCHAR(30))) date,
max(col1) col1,
max(col2) col2
FROM dbo.Staging
GROUP BY ID
)
AS Source
ON ( Target.ID = Source.ID )
WHEN MATCHED THEN
UPDATE SET Target.Date = Source.date,
Target.col1= Source.col1,
Target.col2= Source.col2,
WHEN NOT MATCHED BY TARGET THEN
INSERT (ID
,Date
,col1
,col2
)
VALUES (
Source.ID,
Source.date,
Source.col1,
Source.col2
);
运行select语句会给我第二个输出,查询目标表会给出第一个输出。目标列与最终转换的源字段具有相同的数据类型。
输出位于以下链接
我也试过在网上寻找解决方案但是没有找到太多帮助。如果有人能告诉我哪里出错了,我真的很感激。提前谢谢!