CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

绝对具有挑战性!!!sql server 高手请看过来!!!

楼主pointer111()2001-08-07 16:04:33 在 MS-SQL Server / 基础类 提问

1。我想动态的把某一表的一字段的值变为另一表的列名,怎么写代码??  
        例如:规格字段有一值------aa,字符型的。  
        若写成alter   table   t1   add   'aa'会出错,怎样才能达到alter   table   t1   add   aa  
        的效果?  
   
  2。今有一表,结构如下  
              列名         类型  
              编号         char(20)  
              规格         char(6)  
        变成下面这样的表  
              列名           类型  
              编号           char(20)       同上  
              XX               INT                 记录第一个表中规格值为XX的对应商品编号的商品的个数  
              XXL             int                 记录第一个表中规格值为XXL的对应商品编号的商品的个数  
        .................       从第二列起,所有列的名字为第一个表中具有的不同规格的  
                                                值,列的个数有第一个表中规格不同种类的个数决定。  
                                                 
        怎样用代码实现,最好详细点!!本人将不胜感激!!!  
  问题点数:38、回复次数:8Top

1 楼usb(usb)回复于 2001-08-07 16:25:04 得分 0

取出表1的值作为列名建表2Top

2 楼zhangshzh(joe)回复于 2001-08-07 16:50:49 得分 0

关注!!Top

3 楼N_chow(Yukon)回复于 2001-08-07 17:03:55 得分 20

DECLARE   @strCommand   varchar(200)  
  DECLARE   @strFldName   varchar(20)  
   
  if   EXISTS   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[tblTest2]')   and   OBJECTPROPERTY(id,   N'IsUserTable')   =   1)  
  DROP   table   tblTest2  
   
  /*先把編號欄位加上   */  
  CREATE   Table   tblTest2(編號   varchar(50))  
   
  Declare   cur   CURSOR   FOR  
  SELECT   DISTINCT   規格   From   tblTest1  
   
  open   cur  
   
  SET       @strCommand=   'ALTER   Table   tblTest2   ADD   '    
  FETCH   NEXT   FROM   cur   INTO   @strFldName    
  WHILE   @@FETCH_STATUS=0  
        BEGIN  
                              SET       @strCommand=@strCommand   +   @strFLdName   +   '   INT   ,   '    
                              FETCH   NEXT   FROM   cur   INTO   @strFldName    
      END              
  set       @strCommand=LEFT(@strCommand,LEN(@strCommand)-1)  
      EXECUTE   (@strCommand)  
   
     
   
  CLOSE   Cur  
  DEALLOCATE   CurTop

4 楼N_chow(Yukon)回复于 2001-08-07 17:11:56 得分 0

關鍵是用   EXECUTE   可動態執行一個TSQL語句Top

5 楼liwz(liwz)回复于 2001-08-07 17:28:12 得分 18

Create   proc   altertable2  
        @param1   char(20)  
  As  
      Alter   Table   table2   add   @param1   char(20)  
  go  
   
  Declare   @fld1   char(20)  
  select   @fld1=编号   from   table1   where   ...  
   
  Exec   altertable2   @fld1  
  Top

6 楼liwz(liwz)回复于 2001-08-07 17:32:23 得分 0

Create   proc   altertable2  
      @param1   char(20)  
  As  
      Alter   Table   table2   add   @param1   char(20)  
  go  
   
  Declare   @fld1   char(20)  
  select   @fld1=规格   from   table1   where   ...  
   
  Exec   altertable2   @fld1  
     
   
    Top

7 楼wwl007(疑难杂症)回复于 2001-08-07 19:32:44 得分 0

第一个问题用个动态sql   就可以了!  
  很容易!  
  select   @synsql='alter   table   t1   add     '+@aa  
  exec(@synsql)  
  Top

8 楼pointer111()回复于 2001-08-08 03:25:57 得分 0

谢谢你们大家,我的问题解决了!!Top

相关问题

  • 挑战性的难题!!sql
  • 绝对有挑战性
  • 有挑战性的sql语句
  • sql统计比较有挑战性!
  • 绝对有挑战性,高手请进
  • 执行(.sql)文件 ...(技术性难题,很有挑战性的)
  • SQL高手来,极具挑战性的问题
  • 这个SQL语句怎么写?(极具挑战性)高手进
  • 求一段具有挑战性的sql语句
  • 求一段具有挑战性的sql语句

关键词

  • tbltest
  • strcommand
  • strfldname
  • 表
  • altertable
  • 个数
  • 规格
  • fld
  • alter
  • cur

得分解答快速导航

  • 帖主:pointer111
  • N_chow
  • liwz

相关链接

  • SQL Server类图书

广告也精彩

反馈

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