CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

富有挑战性的问题

楼主snaker2001()2001-09-16 16:31:29 在 MS-SQL Server / 基础类 提问

现在有一张表为A,其有两列名x和y,我如何用其中的一个列名y的记录来当作列名重新建一张表B,也就是动态的创建一张表,请问该如何实现,是否要用到游标???(急急急!!!) 问题点数:20、回复次数:18Top

1 楼smartdonkey(聪明的毛驴)回复于 2001-09-16 16:44:55 得分 0

--是的用游标,如下  
  declare   @s   varchar(1024)  
  declare   @fld_name   varchar(40)  
  declare   mycursor   cursor   for   select   y   from   A  
  open   mycursor  
  fetch   mycursor   into   @fld_name  
  --假设y字段包括字段名字和字段的类型(如:"col1   char(20)")  
  while   @@fetch_status=0  
  begin  
            set   @s=@s+@fld_name+','  
            fetch   mycursor   into   @fld_name  
   
  end  
  set   @s='create   table   mytable('+substring(@s,1,len(@s)-1)+')'  
  execute(@s)  
   
   
     
  Top

2 楼lanying(蓝鹰)(问个不休)回复于 2001-09-16 16:57:58 得分 0

“毛驴“果然聪明呀  
   
  Top

3 楼snaker2001()回复于 2001-09-16 17:38:37 得分 0

这样不行啊,你的“假设y字段包括字段名字和字段的类型(如:"col1   char(20)")”是什么意思,我在SQL语句中怎么写啊???请指点!  
  Top

4 楼snowglave(独孤九剑)回复于 2001-09-16 20:39:53 得分 0

这个问题我做过,好像Fox系列可以这样做,但SQL不用游标的话比较难实现,我用的是Delphi语句代换SQL语名循环实现的,方法比较笨,也期待有一种更好的方法。Top

5 楼hxflx(踪之声)回复于 2001-09-16 21:23:35 得分 0

col1   char(20)   指在y字段所指的记录中包括:字段名   字段类型   字段长度  
                                                                                      col1           char         20  
  要求你把   new表的结构写入到   y   字段中.  
  sql:    
      create   table   mytable(   substring("col1   char(20),",1,len("col1   char(20),")-1)  
  //create   table   mytable('+substring(@s,1,len(@s)-1)+')'     up  
  smartdonkey,right?Top

6 楼snaker2001()回复于 2001-09-16 21:37:31 得分 0

我还是不明白,在“declare   mycursor   cursor   for   select   y   from   A”中,y只是一个字段名,怎么会有“假设y字段包括字段名字和字段的类型(如:"col1   char(20)")”呢,我怎么加入呢,因为我知道后面的@s中要用到数据类型,请指点。Top

7 楼snaker2001()回复于 2001-09-17 09:13:14 得分 0

高手上哪去了呢?怎么没人再回答呢?Top

8 楼smartdonkey(聪明的毛驴)回复于 2001-09-17 09:37:54 得分 0

你的y字段存的什么数据,可以给出真实数据库例子吗?  
  Top

9 楼snaker2001()回复于 2001-09-17 09:43:28 得分 0

y字段名是equip_name,它的数据类型为varchar(30),那这样怎么写入定义游标时的SQL语句呢?非常感谢聪明的毛驴!我急着用!Top

10 楼smartdonkey(聪明的毛驴)回复于 2001-09-17 11:18:31 得分 20

你字段的数据的是什么,举个例子:你不是要根据y当列名建立表吗?比如数据如下  
  quip_name  
  车床  
  铣床  
  刨床  
  拖拉机  
  -------------  
  则可以这样(假设都建立int类型的字段)  
  declare   @s   varchar(1024)  
  declare   @fld_name   varchar(40)  
  declare   mycursor   cursor   for   select   y   from   A  
  open   mycursor  
  fetch   mycursor   into   @fld_name  
  while   @@fetch_status=0  
  begin  
          set   @s=@s+@fld_name+'int   ,'  
          fetch   mycursor   into   @fld_name  
   
  end  
  set   @s='create   table   mytable('+substring(@s,1,len(@s)-1)+')'  
  execute(@s)  
  go  
  insert   into   mytable(车床   ,铣床,   刨床,   拖拉机)   values(11,32,13,14)  
  最后得到的表是这样的  
   
  车床   铣床   刨床   拖拉机  
  11       32       13     14  
   
   
   
   
   
  Top

11 楼xmao(地下室美老鼠)回复于 2001-09-17 11:33:52 得分 0

偶,学习。。学习。Top

12 楼N_chow(Yukon)回复于 2001-09-17 11:52:16 得分 0

這是一個比較簡單的問題,可以不用Cursor來實現。  
  你的y字段的值是否包含資料的型態??下面的例子是沒含型態,你可以根據自己的情況做修改。  
   
  declare   @strCommand   varchar(300)  
  set   @strCommand   =''  
  /*這里的字段所有的資型態都為   int,你可以自行設定,   如果每個字段的型態都不同的話,可以用另一個字段來存這些信息,然后把下面的int改為另一個字段的名字   */  
  select   @strCommand=@strCommand+CASE   WHEN   @strCommand=''   then   ''   else   ','   end     +'['     +y+']'   +'   int   '     From   A  
  select   @strCommand  
     
  Declare   @strExe   varchar(350)  
  set   @strExe='Create   table     B     (   '   +@strCommand     +'   )'  
  exec   (   @strExe   )  
   
    Top

13 楼snaker2001()回复于 2001-09-18 11:12:16 得分 0

我的字段y的记录是中文的,因此我所建立的表B的列名也是中文的,但这样不行,我把记录换成英文(也就是字符)就可以了,聪明的毛驴,这怎么办呢,望请指点。不胜感激!Top

14 楼snaker2001()回复于 2001-09-18 11:34:51 得分 0

现在中文可以了,刚才不知道哪里出了问题。Top

15 楼suiyixin(随意)回复于 2001-09-18 13:01:50 得分 0

关注Top

16 楼smartdonkey(聪明的毛驴)回复于 2001-09-18 13:29:17 得分 0

中文是没问题的Top

17 楼snaker2001()回复于 2001-09-19 08:28:42 得分 0

谢谢聪明的毛驴,能不能看看这个帖子:http://www.csdn.net/expert/topicview1.asp  
  分必给!Top

18 楼smartdonkey(聪明的毛驴)回复于 2001-09-20 17:42:45 得分 0

没有啊,我访问不到.is-null@sohu.comTop

相关问题

  • 一个富有挑战性的问题
  • 一个富有挑战性的问题!
  • 一个富有挑战性的算法:取词,我出50
  • 考试系统中的时间控制(急!富有有挑战性!)
  • 如何用VB发送EMAIL,没有装OUTLOOK和Exchange,,富有挑战性哦!!!
  • 新手到也,提一个富有挑战性的数据库效率问题,专家请进...
  • 一个富有挑战性的复杂SQL查询的优化问题(高手请进)
  • 挑战性问题!
  • 5000元以上寻求高手破解加密狗,项目富有挑战性,请路过的饼子们顶一下,见者有分!
  • 挑战性的考验!!

关键词

  • 字段
  • 语句
  • 数据
  • mycursor
  • strcommand
  • fld
  • 游标
  • 字段名
  • 表
  • 刨床

得分解答快速导航

  • 帖主:snaker2001
  • smartdonkey

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo