如何使用数据类型转换和值操作从另一个 table 插入一个 table

How to insert into one table from another table with datatype conversions and value manipulations

我需要编写一个查询,将数据从 TableA 插入 TableB

如果表 B 中已经存在数据,请不要插入。

TableA 是一个 table,其数据使用 SSIS 包导入,所有字段均为 varchar 数据类型。

TableB 是一个 table 具有不同数据类型的字段。

进行插入时,我需要将数据从 TableA 插入到 TableB,确保 TableB 以正确的格式获取数据。

这是一个 TableA 数据导入 SSIS 作为 varchar 输入所有内容:

这是表B的结构:

我正在编写以下查询:

insert into
TableB(Date,Receipt,Description,CardMember,AccountNumber,Amount,YYYYMM)
select Date,Receipt,Description,CardMember,AccountNumber,Amount, 
convert(varchar(4), year(getdate())) + convert(varchar(2), 
month(getdate())) from TableA a
where not exists(select 1 from TableB b where 
b.CardMember = a.CardMember) and (convert(varchar(4), year(getdate()))
+ convert(varchar(2), month(getdate()))) = b.YYYYMM
TableB 中的

YYYYMM 列应包含 YYYYMM 数据,其中 YYYY 是当前年份,MM 是当前月份。

例如:

year(GetDate()) = 2015
month(GetDate()) = 7

我在找 201507

因此,查询成功执行后,我的 TableB 如下所示:

我的查询某处有误,执行时出现以下错误:

Msg 102, Level 15, State 1, Line 1 Incorrect syntax near 'id'. Msg 102, Level 15, State 1, Line 4 Incorrect syntax near 'YYYYMM'.

正确的做法是什么?

最后一个字段是一个整数。不要像你这样使用 varchar 函数来填充它:

convert(varchar(4), year(getdate())) + convert(varchar(2), 
month(getdate()))

相反,只需添加整数:

datepart(yyyy,getdate())*100 + datepart(mm,getdate())