zping.com

SQL SERVER,ORACLE数据库分析,设计,研究,优化,重构等

统计

常用链接

留言簿(3)

友情衔接

阅读排行榜

评论排行榜

SQL 语句技巧--多行变一列

 

   今天碰到一个需求,将多行数据id值,变成一列,并更新到制定列中,在网上找了也没好的方法,最后自己写了一个实现,语句如下:

create FUNCTION stTable
(    
    
@id varchar(32)
)
RETURNS @st TABLE (id varchar(8000)) 
begin
    
declare @sql as varchar(8000);
    
set @sql=''
    
select @sql=@sql+','+objid2+'' 
    
from (select distinct objid2 from dbo.refobjlink where objid1=@id and  
    linktype
='project3')  b
    
set @sql=substring(@sql,2,len(@sql))
    
insert into @st values(@sql)
    
return 
end
GO

update project set numbers=t.id
from project
CROSS APPLY  stTable(project.id) t
GO

 

 结果是:

原有多行的数据:
1
2
3
4
5
转化为一列的数据:
1,2,3,4,5
http://www.zping.com/  热爱祖国

posted on 2008-09-26 16:36 zping.com 阅读(116) 评论(2)  编辑 收藏 网摘 所属分类: SQL 技巧和优化

评论

#1楼  2008-09-27 09:35 Jerry Qian      

set @sql=substring(@sql,2,len(@sql))
@ST临时表是这样的形式吗.
id
1
2
3
4
5
6
  回复  引用  查看    

#2楼 [楼主] 2008-10-01 11:17 zping.com      

@Jerry Qian
不是,是将上面的多行的列转化成一列数据   回复  引用  查看    


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-10-01 11:17 编辑过
Google站内搜索


相关链接: