sqlserver2000 升级到2008后,关于insert into select的问题 200

SQL:insertintotable1selectcol1,LEFT(CONVERT(VARCHAR,DATEADD(mm,0,GETDATE()),112),6)fr... SQL:
insert into table1 select col1,LEFT(CONVERT(VARCHAR, DATEADD(mm, 0, GETDATE()), 112), 6) from table2 group by col1.

其中,table1有三个varchar型可为空的列。
这个SQL在2000里不出错。在2008里出错。如果去掉Group by,2000里也出错。我想知道为什么2000里不出错,2008里改了什么地方导致出错。谢谢大家。     
因为还要给客户解释,所以请大家说的详细点,最好有些官方的参考什么的。谢谢  
错误:插入的列数和目标表的列数不一致。
这个问题改倒是好改,但是不知道为什么,不好跟客户解释,不能笼统地说数据库升级产生的问题
展开
 我来答
szm341
2012-12-28 · TA获得超过6726个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5122万
展开全部
2000也不该有这样的问题,与group by没关系,
你去掉group by报的错误与2008你给出的错误肯定不是同一个错误
你会不会是在table1中新增了字段后才变成3个的?
追问
table1一直是3个字段,2000去掉group by出的错误和2008是一样的。
追答
看错了,错误应该是一样的
不过还是想不通这个语句如何会通过,一般如果有标识列的话是需要跳过不输入的
其他情况,即便有默认值也要显示指定其他列啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gy93108083
2012-12-28 · TA获得超过283个赞
知道小有建树答主
回答量:665
采纳率:50%
帮助的人:272万
展开全部
看下错误类型,报了什么错
select col1,LEFT(CONVERT(VARCHAR, DATEADD(mm, 0, GETDATE()), 112), 6) from table2 group by col1 好像只有2个字段啊,你 table1不是有3个字段么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
叶思凯1
2013-01-05
知道答主
回答量:29
采纳率:0%
帮助的人:11.5万
展开全部
2000也不该有这样的问题,与group by没关系,
你去掉group by报的错误与2008你给出的错误肯定不是同一个错误
你会不会是在table1中新增了字段后才变成3个的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
苟活的意义
2012-12-30 · TA获得超过141个赞
知道小有建树答主
回答量:236
采纳率:0%
帮助的人:120万
展开全部
发下他的错误提示吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
baiynijecym
2012-12-28 · TA获得超过1841个赞
知道大有可为答主
回答量:1411
采纳率:66%
帮助的人:1157万
展开全部
看你的语句没有错误,具体报的什么错?
更多追问追答
追问
2000里不报错,删掉group by后和2008里报一样的错,就是插入的列数和目标表的列数不一致  
追答
你这种写法的,要跟表的列数要一样才行的,跟group by 没有关系。
或者你也写成insert into table1(要插入的列的列表),这样就不会有问题了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式