Sql server 在稀疏表SQL中插入数据时出错
我试图在SQL范围的表(稀疏表)上运行insert查询,但出现错误: “提供的值的列名或数目与表定义不匹配” 查询:Sql server 在稀疏表SQL中插入数据时出错,sql-server,tsql,pivot,sql-insert,Sql Server,Tsql,Pivot,Sql Insert,我试图在SQL范围的表(稀疏表)上运行insert查询,但出现错误: “提供的值的列名或数目与表定义不匹配” 查询: 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 P
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 into table_1 (cola, colb, colc)
select cola, colb, colc from table_2
插入tb1值('1'、'2'、'3')
-只要您只有3列就可以了
如果您有4列,但只想插入其中3列。
您必须在插入到
insert into tb1 (Col1,col2,col3) select col1, col2, col3 from tb_2
注意:始终明确定义INSERT
语句应将数据填入的列列表查询中是否确实有(表1是稀疏表)
?如果这应该是一条注释,那么应该在它前面加上--
,或者将它完全从代码块中取出。查询返回6列。由于没有指定要插入的列,因此它假定您正在尝试插入所有列。如果有超过6列,您将得到此错误。它是否是稀疏表并不重要。列出要填充的列,或者在查询中返回足够的列以填充所有列(可以对其他列值使用NULL
)。不要在没有列列表的情况下使用insert语句。欢迎使用堆栈溢出。与其他问答网站相比,这样做的诸多好处之一是,任何人都可以编辑问题,这意味着问题可以改进。你的问题不仅对你有价值,对其他人也有潜在的价值,但如果它干净、简洁、格式良好,并且符合中列出的标准,那么它的价值就会大得多。marc_不久前做了一次编辑,这改进了你的问题,但是你把编辑退回去了,为什么这可能不再完全是“你的”问题,但本质是一样的,答案也是一样的。在tb1值中插入('1','2','3')-只要你只有3列就行-注意,如果你有4列,其中一列是一个标识,这也行得通,但我全力支持明确说明这些列,否则,如果添加了列,insert语句将中断。