拼吾爱程序人生

首页 » 数据库编程 » SQL » 推荐;适合SQL初学者学习的SQL FAQ集锦
SystemPoster - 2007-8-6 17:35:00
1 2 下一页  1. 行列转换--普通
  
假设有张学生成绩表(CJ)如下:



   
    Name  Subject   Result
张三  语文    80
张三  数学    90
张三  物理    85
李四  语文    85

李四  数学    92
李四  物理    82
  
想变成

姓名  语文  数学  物理
张三  80   90   85
李四  85   92   82
 
 


  


   
    declare @sql varchar(4000)
set @sql = 'select Name'
select @sql = @sql  ',sum(case Subject when ''' Subject '''
then Result end) [' Subject ']'
from (select distinct Subject from CJ) as a
select @sql = @sql ' from test group by name'
exec(@sql)
 
 



2. 行列转换--合并



   
    有表A,
id pid
1  1
1  2
1  3
2  1
2  2
3  1
如何化成表B:
id pid
  1  1,2,3
  2  1,2
  3  1
 
 




创建一个合并的函数




   
    create function fmerg(@id int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str='
select @str=@str ',' cast(pid as varchar) from 表A where id=@id
set @str=right(@str,len(@str)-1)
return(@str)
End
go
 
 




--调用自定义函数得到结果



   
    select distinct id,dbo.fmerg(id) from 表A

 您可能对 [SQL] 的这些文章也感兴趣:

批量更改数据库对象所有者nf_ChangeObjectOwner
SQL字符串函数
优化数据库前,问自己10个问题
网络SQL入侵与防范高级篇
使用ODC文档在IE中直接连接SQL数据库
将表数据生成SQL脚本的存储过程
利用MSSQL sp自制未公开的加密函数
启动SQL SERVER时自动执行存储过程
存储过程编写经验和优化措施
利用SQL移动硬盘文件
SQL语言入门教程:第五课 删除数据库表格
Sql语句密码验证的安全漏洞
1
查看完整版本: 推荐;适合SQL初学者学习的SQL FAQ集锦
Modify by pin5i DZNT_ExpandPackage 2.1.3295 2007-2009 pin5i.com
 Total Unique Visitors: