如何使用数据类型转换和值操作从另一个 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())
我需要编写一个查询,将数据从 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())