我想从下面的其他数据中添加庞大的数据。但我不能这样做:错误被返回。但是区域与另一个区域相同。
declare @hrmtable1 table(musterino int, ekno smallint)
insert into @hrmtable1 (musterino , ekno)
select distinct musterino, ekno
from hareketmuhasebe (nolock)
where islemtarihi >= '20120101'
and isnull(musterino, 0) <> 0
and isnull(musterino, 0) > 9000000
and isnull(ekno,0) <> 0
insert into table1(A,B,C,D,E,. . . . .N)
SELECT DISTINCT
case when ((select count(*) from table1 where musterino=e.musterino) > 0)
then (select top 1 *
from dbo.table1
where musterino = e.musterino
order by ekno desc)
else
(select 100, e.musterino, e.ekno, 0, K, L, M)
from @hrmtable1 e )
end
ERROR:
Msg 120,Level 15,State 1,Line 10
INSERT语句的选择列表包含的项目少于插入列表 SELECT值的数量必须与INSERT列的数量相匹配。
答案 0 :(得分:0)
编辑:由于您编辑了问题,答案仍然是相同的。 Select语句中的列数与代码第二部分中的insert语句列不匹配。
在您的第一个声明中,您指定的是2
列,并且您选择了5
列,它们应该匹配,这就是错误告诉您的内容。
insert into @hrmtable1 (musterino , ekno)
^^^^^^^ ^^^^
select distinct musterino,ekno,defterid,dovizcinsi, subekodu
^^^^^^^ ^^^ ^^^^ ^^^^^ ^^^^^
从您的insert
语句中看起来您不需要Select
语句中的最后三列。
答案 1 :(得分:0)
如错误中所述,insert中的列数不会超出您提供的值的数量
insert into @hrmtable1 (musterino , ekno)
select distinct musterino,ekno
from hareketmuhasebe (nolock)
where islemtarihi >= '20120101'
and isnull(musterino,0) <> 0 and isnull(musterino,0) < 9000000 and isnull(ekno,0) <> 0
答案 2 :(得分:0)
试试这个:
insert into @hrmtable1 (musterino , ekno)
select distinct musterino,ekno
from hareketmuhasebe (nolock)
where islemtarihi >= '20120101'
and isnull(musterino,0) <> 0 and isnull(musterino,0) < 9000000 and isnull(ekno,0) <> 0
您在插入&amp;中有2列select子句中的5列,这是错误的原因。
答案 3 :(得分:0)
INSERT语句的选择列表包含的项目数少于 插入列表。 SELECT值的数量必须与数量匹配 INSERT列。
错误本身会告诉您错误的错误。 insert语句中的列数少于select语句的列数。
来自 MSDN
子查询的选择列表必须与列的列表列表匹配 INSERT语句。如果未指定列列表,则必须使用选择列表 匹配要插入的表或视图中的列。
详细了解Inert into