sql server 用select into 创建的新表为什么在系统数据库master下面
IFOBJECT_ID(N'newtb',N'U')ISNOTNULLDROPTABLEnewtbgoDeclare@SVarchar(8000)Select@S='Se...
IF OBJECT_ID (N'newtb', N'U') IS NOT NULL
DROP TABLE newtb
go
Declare @S Varchar(8000)
Select @S = 'Select 商品条码, 商品名称,地区'
Select @S = @S + ', SUM(Case convert(varchar(10),统计日期,120) When ''' + convert(varchar(10),[统计日期],120) + ''' Then 销量 Else 0 End) as ['+convert(varchar(10),[统计日期],120)+'_销量], SUM(Case convert(varchar(10),统计日期,120) When ''' + convert(varchar(10),[统计日期],120) + ''' Then 库存 Else 0 End) as ['+convert(varchar(10),[统计日期],120)+'_库存]'
From [sydtData].[dbo].[jd_kc] Group By convert(varchar(10),统计日期,120) order by convert(varchar(10),统计日期,120)
Select @S = @S + 'into newtb From [sydtData].[dbo].[jd_kc] Group By 商品条码,商品名称,地区'
print @S
EXEC(@S)
以上语句能够正常执行,但是生成的新表 newtb 不在当前数据库[sydtData]下面,而是在系统数据库[master]下面,求问应该怎么做。 展开
DROP TABLE newtb
go
Declare @S Varchar(8000)
Select @S = 'Select 商品条码, 商品名称,地区'
Select @S = @S + ', SUM(Case convert(varchar(10),统计日期,120) When ''' + convert(varchar(10),[统计日期],120) + ''' Then 销量 Else 0 End) as ['+convert(varchar(10),[统计日期],120)+'_销量], SUM(Case convert(varchar(10),统计日期,120) When ''' + convert(varchar(10),[统计日期],120) + ''' Then 库存 Else 0 End) as ['+convert(varchar(10),[统计日期],120)+'_库存]'
From [sydtData].[dbo].[jd_kc] Group By convert(varchar(10),统计日期,120) order by convert(varchar(10),统计日期,120)
Select @S = @S + 'into newtb From [sydtData].[dbo].[jd_kc] Group By 商品条码,商品名称,地区'
print @S
EXEC(@S)
以上语句能够正常执行,但是生成的新表 newtb 不在当前数据库[sydtData]下面,而是在系统数据库[master]下面,求问应该怎么做。 展开
2个回答
2016-06-25
展开全部
在服务器上执行的代码中(例如在存储过程和触发器中)显示的Unicode字符串常量必须以大写字母N为前缀。即使所引用的列已定义为Unicode类型,也应如此。如果不使用N前缀,字符串将转换为数据库的默认代码页。这可能导致不识别某些字符。使用N前缀的要求适用于服务器上产生的字符串常量和从客户端发送的字符串常量。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |