我试图在SQL宽表(稀疏表)上运行插入查询,但我收到一个错误:
“列名或提供的值数与表定义不匹配”
查询:
Insert [dbo].[Table1] (Table1 is a sparse table)
select id, [A],[B], [C], [D], [E] from (
Select ID,
CategoryId,
1 as Flag
From dbo.table2
) a Pivot(Avg(Flag) For CategoryID In (
[A],
[B],
[C],
[D],
[E]
)) As PivotTable
我能够运行普通sql表的查询,但它对于稀疏表失败。我真的很感激任何帮助
提前致谢
你应该做:
- 创建一个
INSERT
语句,明确列出它将插入的列 - 假设ID
可能是你不想/无法插入的IDENTITY
列- 定义要填充到这些列中的确切数量的值
你的INSERT语句应该是这样的:
insert into table_1 (cola, colb, colc)
select cola, colb, colc from table_2
insert into tb1 values('1', '2','3')
- 只要你只有3列就可以正常工作
如果你有4列,但只想插入3列。您必须在INSERT INTO
中包含列名称
insert into tb1 (Col1,col2,col3) select col1, col2, col3 from tb_2
注意:始终明确定义INSERT
语句应填充数据的列的列表