我需要编写一个查询,将数据从TableB
插入TableA
。
如果TableB中已存在数据,请勿插入。
TableA
是一个表,其中使用SSIS
包导入数据,所有字段均为varchar数据类型。
TableB是一个包含不同数据类型字段的表。
进行插入时,我需要将TableA
中的数据插入TableB
,确保TableB
以正确的格式获取数据。
这是一个TableA
,其SSIS
导入数据,varchar
输入所有内容:
这是TableB的结构:
我正在编写以下查询:
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
YYYYMM
中的 TableB
列应包含YYYYMM
个数据,其中YYYY
是当前年份,MM
是当前月份。
例如:
year(GetDate()) = 2015
month(GetDate()) = 7
我正在寻找201507
因此,在成功执行查询之后,我将TableB看起来像这样:
我的查询在某个地方是错误的,在执行时,我有以下错误:
Msg 102,Level 15,State 1,Line 1语法不正确' id'。消息 102,Level 15,State 1,Line 4语法不正确' YYYYMM'。
这样做的正确方法是什么?
答案 0 :(得分:2)
最后一个字段是int。不要像使用varchar函数那样填充它:
convert(varchar(4), year(getdate())) + convert(varchar(2),
month(getdate()))
相反,只需添加整数:
datepart(yyyy,getdate())*100 + datepart(mm,getdate())