我有以下 TSQL:
CREATE TABLE #RefTables(RefTable varchar(50) , row varchar(50), id int)
insert into #RefTables
select
CONVERT(varchar, tblReferenceTables.description, 0) as RefTable,
CONVERT(varchar, tblReferenceTableRows.description, 0) as row,
tblReferenceTableRows.id
from
tblReferenceTables
inner join
tblReferenceTableRows on tblReferenceTables.id = tblReferenceTableRows.ref_table_id
where
tblReferenceTables.type_id in (0, 2)
and tblReferenceTables.id in (3, 4, 14)
但返回异常:
插入错误:列名或提供的值的数量与表定义不匹配
有人能告诉我这有什么问题吗?我也尝试过使用CAST
也没有成功。如果我不使用临时表,查询执行得很好。
我需要将数据类型更改为,varchar
以便可以聚合原始表中的文本字段。
参考:
- SQL Server 2005 企业版
编辑
似乎是因为description
原始表中的字段名称(分别)与临时表字段的名称分别不匹配,这似乎是导致错误的原因。如果我添加另一个临时表重命名文本字段,一切正常。这似乎是 SQL 引擎的限制?
编辑 2
使用marc_s's
建议还可以解决错误而无需另一个临时表 - 谢谢!!!请移动您的评论以回答,以便我将其标记为此问题的解决方案。