求一sql 写法,在线等!!

[复制链接]
查看11 | 回复4 | 2011-11-16 22:31:22 | 显示全部楼层 |阅读模式
db: ms sql server
用存储过程能否实现如下功能:
有一个表有:a , b , c ,d , e ,f g , h , i , j .........列
想变成如下形式:
a bcdefg
a bcdhi j
a bcd................
不知道表达明白了没有,别人问我的,我觉得好像实现不了吧!
要求维护性要高,因为表的结构有可能变化
回复

使用道具 举报

千问 | 2011-11-16 22:31:22 | 显示全部楼层
create procedure zhuan @i int
as
declare @col1 nvarchar(200), @col2 nvarchar(200),@col3 nvarchar(200)

declare @sql varchar(200)
set@col1=(select name from syscolumns where id=(select id
from sysobjects where name='table1' ) and colid=5+1)
set @col2=(select name from syscolumns where id=(select id
from sysobjects where name='table1)and colid=@i+2)
set @col3=(select name from syscolumns where id=(select id
from sysobjects where name='table1')and colid=@i+3)
set @sql= 'selecta ,b ,c ,d,'+@col1+','+@col2+','+@col3+' into linshi

from table1'
exec(@sql)
我不知道是不是这么理解你的意思,你是准备把表格拆成n个小的表格?每个表个都有a,b,c,d四列+三列?我是这么理解的,如果是这样的话,看看这个存储过程吧,我写得不好,作拉一个叫做linshi的表格,作为中转区,先把数据放在这里,然后把数据导入到新的表格里面同时删掉linshi,每次用的时候都要删除一次linsihi表格。这么在参数里面设置表格名字的参数我就不知道了,如果知道了话,就不用建立那个linshi的表格拉,去WC喽
回复

使用道具 举报

千问 | 2011-11-16 22:31:22 | 显示全部楼层
上完厕所就是爽阿,接着说吧,那个linshi的表格不用啦,我刚想起来存储过程的参数是表格的名字方法如下:
create procedure down @table_a varchar(10)
as
declare @tableb varchar(200)
declare @sql varchar(200)
set @tableb=@tablea
set @sql='select * into ' +@tableb+' from employees'
exec(@sql)
比如exec downbiao ,然后就会自动生成表格biao,里面的数据就是 select * from employees
记住啦那个 ‘select * into ’后面那里有个空格,' from employees'前面也有一个空格。
希望这些想法能帮助你!
回复

使用道具 举报

千问 | 2011-11-16 22:31:22 | 显示全部楼层
这两个结合一下
回复

使用道具 举报

千问 | 2011-11-16 22:31:22 | 显示全部楼层
哥们,多谢了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行