推荐;适合SQL初学者学习的SQL FAQ集锦

ZDNet软件频道 时间:2009-11-17 作者:赛迪网 li | 天新网 我要评论()
本文关键词:数据库 Mssql SQL Server SQL
本文将为大家介绍适合SQL初学者学习的SQL FAQ集锦。

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

数据库

Mssql

SQL Server

SQL


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134