CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

请教各位如何在sql后台用sql语句增加这个临时表的列和列的数据

楼主xej(初学者)2006-03-14 12:31:08 在 MS-SQL Server / 疑难问题 提问

本人在sql后台写了一个临时表的存储过程,其代码如下:    
      create   table   #t(商品编号   varchar(300),商品名称   varchar(300),包装规格   decimal(18,4),整单位   varchar(50),散单位   varchar(50))  
       
      insert   into   #t(商品编号,商品名称,包装规格,整单位,散单位)  
       
      select   a.code   as   '商品编号',a.name   as   '商品名称',a.packstandard   as   '包装规格',c.name   as   '整单位',b.name   as   '散单位'   from   t_bs_product   as   a  
          left   join   t_codes   b   on   a.bs_unit_dispel_id   =b.id  
          left   join   t_codes   c   on   a.bs_unit_full_id   =c.id    
   
  但是这个临时表还需增加列和数据,还需要从select   name   from   t_codes   where   type=217里查出可随时自动增加的name(名称)作为列,从t_bs_product_datilej里查出数据作为列的数据。请教各位,如何在sql后台用sql语句增加这个临时表的列和列的数据。 问题点数:50、回复次数:7Top

1 楼happyflystone(无枪的狙击手)回复于 2006-03-14 12:33:44 得分 0

alter   table   #t   add   colname   [type]Top

2 楼wgsasd311(自强不息)回复于 2006-03-14 12:48:58 得分 0

declare   @colname   varchar(40)  
  declare   cur   cursor   for  
  select   [name]   from   t_codes   where   type=217  
  open   cur    
  fetch   next   from   cur   into   @colname  
  while   @@fetch_status=0  
  begin  
  exec('alter   table   #t   add   '+@colname+'   varchar(20)   ')  
  fetch   next   from   cur   into   @colname  
  endTop

3 楼xej(初学者)回复于 2006-03-14 15:17:55 得分 0

wgsasd311(自强不息)   写的语句能增加所有的列,但是还不能实现从t_bs_product_datilej的表中查出所有相关列的数据并插入这个临时表中,如何实现这最后一步Top

4 楼wgsasd311(自强不息)回复于 2006-03-14 17:38:57 得分 0

 
  create   table   #t(商品编号   varchar(300),商品名称   varchar(300),包装规格   decimal(18,4),整单位   varchar(50),散单位   varchar(50))  
  declare   @colname   varchar(4000),@sql   varchar(8000)  
  declare   cur   cursor   for  
  select   [name]   from   t_codes   where   type=217  
  open   cur    
  fetch   next   from   cur   into   @colname  
  while   @@fetch_status=0  
  begin  
  exec('alter   table   #t   add   '+@colname+'   varchar(20)   ')  
  fetch   next   from   cur   into   @colname  
  end  
  --上面增加了所有列名后,下面插入数据  
  set   @colname=''  
  select   @colname=@colname+','+[name]   from   t_codes   where   type=217  
   
  set   @sql='insert   into   #t(商品编号,商品名称,包装规格,整单位,散单位',+@colname+')'  
  set   @sql=@sql+'     select   a.code   ,a.name   ,a.packstandard   ,  
  c.name   ,b.name   '+@colname+'   from   t_bs_product   as   a  
          left   join   t_codes   b   on   a.bs_unit_dispel_id   =b.id  
          left   join   t_codes   c   on   a.bs_unit_full_id   =c.id   '  
  exec(@sql)Top

5 楼wgsasd311(自强不息)回复于 2006-03-14 17:40:16 得分 0

 
  create   table   #t(商品编号   varchar(300),商品名称   varchar(300),包装规格   decimal(18,4),整单位   varchar(50),散单位   varchar(50))  
  declare   @colname   varchar(4000),@sql   varchar(8000)  
  declare   cur   cursor   for  
  select   [name]   from   t_codes   where   type=217  
  open   cur    
  fetch   next   from   cur   into   @colname  
  while   @@fetch_status=0  
  begin  
  exec('alter   table   #t   add   '+@colname+'   varchar(20)   ')  
  fetch   next   from   cur   into   @colname  
  end  
  --上面增加了所有列名后,下面插入数据  
  set   @colname=''  
  select   @colname=@colname+','+[name]   from   t_codes   where   type=217  
   
  set   @sql='insert   into   #t(商品编号,商品名称,包装规格,整单位,散单位'+@colname+')'  
  set   @sql=@sql+'     select   a.code   ,a.name   ,a.packstandard   ,  
  c.name   ,b.name   '+@colname+'   from   t_bs_product   as   a  
          left   join   t_codes   b   on   a.bs_unit_dispel_id   =b.id  
          left   join   t_codes   c   on   a.bs_unit_full_id   =c.id   '  
  exec(@sql)  
  Top

6 楼xej(初学者)回复于 2006-03-14 18:41:32 得分 0

wgsasd311(自强不息)的再一次回复还是没有实现最后一步,因为最后哪一步是从t_bs_product_datile里查出数据作为列的数据,而不是从t_bs_product里取出,两个表之间的相连是select   a.code   ,a.name   ,a.packstandard   ,  
  c.name   ,b.name   '+@colname+'   from   t_bs_product   as   a  
          left   join   t_codes   b   on   a.bs_unit_dispel_id   =b.id  
          left   join   t_codes   c   on   a.bs_unit_full_id   =c.id    
          left   join   t_bs_product_detail   d   on   d.bs_product_id=a.id  
  但这个'+@colname+'我不会写代码Top

7 楼wgsasd311(自强不息)回复于 2006-03-14 22:33:02 得分 50

create   table   #t(商品编号   varchar(300),商品名称   varchar(300),包装规格   decimal(18,4),整单位   varchar(50),散单位   varchar(50))  
  declare   @colname   varchar(4000),@sql   varchar(8000)  
  declare   cur   cursor   for  
  select   [name]   from   t_codes   where   type=217  
  open   cur    
  fetch   next   from   cur   into   @colname  
  while   @@fetch_status=0  
  begin  
  exec('alter   table   #t   add   '+@colname+'   varchar(20)   ')  
  fetch   next   from   cur   into   @colname  
  end  
  --上面增加了所有列名后,下面插入数据  
  declare   @col   varchar(400)  
  set   @colname=''  
  select   @colname=@colname+','+[name]   from   t_codes   where   type=217  
  --因为最后哪一步是从t_bs_product_datile里查出数据作为列的数据,而不是从t_bs_product里取出,两个表之间的相连是select    
  set   @col=''  
  select   @col=@col+',d.'+[name]   from   t_codes   where   type=217  
   
  set   @sql='insert   into   #t(商品编号,商品名称,包装规格,整单位,散单位'+@colname+')'  
  set   @sql=@sql+'     select   a.code   ,a.name   ,a.packstandard   ,  
  c.name   ,b.name   '+@col+'   from   t_bs_product   as   a  
          left   join   t_codes   b   on   a.bs_unit_dispel_id   =b.id  
          left   join   t_codes   c   on   a.bs_unit_full_id   =c.id    
          left   join   t_bs_product_detail   d   on   d.bs_product_id=a.id   '  
  exec(@sql)Top

相关问题

  • 如何用sql语句删除一个临时表?
  • 急问:动态执行Sql语句与临时表?
  • 求教判断临时表存在的SQL语句。。。。急
  • sql语句,临时表操作基础问题
  • sql语句 求分隔字符串转临时表
  • 删除的SQL语句怎么写?在后台是SQL SERVER2000为后台数据库的表里.
  • 以Orcle为后台数据库,以下SQL语句出现了错误:
  • 以Orcle为后台数据库,以下SQL语句出现错误(二):
  • 求SQL语句
  • sql语句。

关键词

  • 语句
  • 数据
  • sql
  • colname
  • 临时表
  • 后台
  • cur
  • varchar
  • 商品
  • 单位

得分解答快速导航

  • 帖主:xej
  • wgsasd311

相关链接

  • SQL Server类图书

广告也精彩

反馈

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