展开全部
很简单,所有列名都不写就行了。
insert into #xsmx1
select customer,month1_quantity,month2_quantity,month3_quantity,
avg_quantity,wait_quantity from #xsmx
如果非要写列名,用拼接sql的方法吧,
exec('insert into #xsmx1 (客户名称,['+@month1+'],['+@month2+'],本月已发,月平均用量,本月待发量) select customer,month1_quantity,month2_quantity,month3_quantity,
avg_quantity,wait_quantity from #xsmx')
insert into #xsmx1
select customer,month1_quantity,month2_quantity,month3_quantity,
avg_quantity,wait_quantity from #xsmx
如果非要写列名,用拼接sql的方法吧,
exec('insert into #xsmx1 (客户名称,['+@month1+'],['+@month2+'],本月已发,月平均用量,本月待发量) select customer,month1_quantity,month2_quantity,month3_quantity,
avg_quantity,wait_quantity from #xsmx')
追问
所有列名都不写 insert into #xsmx1
提示 列名或所提供值的数目与表定义不匹配
用拼接SQL能成功插入
那我要查询这几列的话,该怎么输入SELECT语句
select ?,? from #xsmx1
追答
也用拼接啊
exec('select ['+@month1+'],['+@month2+']from #xsmx1')
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这种情况下你需要使用动态SQL了。
create table t(id int)
go
declare @colname varchar(20) = 'id'
declare @colvalue varchar(20) = '1'
exec ('insert into t('+@colname+') values('+@colvalue+')')
go
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用系统表可以查询,
查询语句如下:
Select name from syscolumns Where ID=OBJECT_ID('表名')
查询语句如下:
Select name from syscolumns Where ID=OBJECT_ID('表名')
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将第二个字段和第三个字段用中括号[]括起来就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询