Sql 如何通过数据类型转换和值操作从另一个表插入到一个表中
我需要编写一个查询,将数据从Sql 如何通过数据类型转换和值操作从另一个表插入到一个表中,sql,sql-insert,Sql,Sql Insert,我需要编写一个查询,将数据从TableA插入TableB 如果表B中已存在数据,请不要插入它 TableA是一个表,其中包含使用SSIS包导入的数据,所有字段均为varchar数据类型 TableB是一个具有不同数据类型字段的表 执行insert时,我需要将数据从TableA插入TableB,确保TableB的数据格式正确 这是一个TableA,其中数据以SSIS的形式导入为varchar键入所有内容: 这是表B的结构: 我正在编写以下查询: insert into TableB(Date,
TableA
插入TableB
如果表B中已存在数据,请不要插入它
TableA
是一个表,其中包含使用SSIS
包导入的数据,所有字段均为varchar数据类型
TableB是一个具有不同数据类型字段的表
执行insert时,我需要将数据从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
yyyym
表B中的yyyym
列应包含yyyym
数据,其中YYYY
是当前年份,MM
是当前月份
例如:
year(GetDate()) = 2015
month(GetDate()) = 7
我在找201507
因此,在查询成功执行后,表B如下所示:
我的查询某处出错,执行时出现以下错误:
Msg 102,15级,状态1,第1行“id”附近语法不正确。味精
102,15级,状态1,第4行“YYYYMM”附近语法不正确
正确的方法是什么?最后一个字段是一个int。不要像使用varchar函数那样填充它:
convert(varchar(4), year(getdate())) + convert(varchar(2),
month(getdate()))
相反,只需添加int:
datepart(yyyy,getdate())*100 + datepart(mm,getdate())
您引用的别名
tt
,以前在任何地方都没有定义。我更新了SQL语句。因此,datepart返回的数据类型基本上是整数?那么convert(char(6),getDate(),112)
呢?如果使用这种方法,如果需要将结果与整数字段进行比较,是否应该将其转换为整数?你只是自找麻烦。当int使用较少的数据时,为什么要转到char呢。convert(char(6),getDate(),112)可以输出给用户。但如果是表插入,则使用整数。如果您需要比较,我会将int转换为char,而不是char转换为int。这样可以减少错误。谢谢您的解释