在稀疏表SQL中插入数据时出错

问题描述 投票:1回答:1

我试图在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表的查询,但它对于稀疏表失败。我真的很感激任何帮助

提前致谢

sql-server tsql pivot sql-insert
1个回答
1
投票

你应该做:

  • 创建一个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语句应填充数据的列的列表

© www.soinside.com 2019 - 2024. All rights reserved.