sqlserver2000 下,行列转换(从简单到复杂二)

本文介绍了一种使用SQL字符串拼接方法来处理课程成绩数据的方法,并探讨了如何利用SQL Server 2005中的PIVOT/UNPIVOT关键字简化行列转换的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接上篇,要是课程我不知道怎么办呢?“办法比困难多”,考虑后得出一个解决方法。

就是用字符串拼接的方法,把所有的课程都拼接起来。不是很繁琐。代码如下:


USE TEMPDB

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'TEMPDB.[dbo].[#temptable]'AND type in (N'U'))
begin
    
drop table #temptable
end
create table #temptable
(
 ID 
int ,
 course 
varchar(10),
 Point 
int
)

insert into #temptable
select 1 ,'语文',87
union all
select 1 ,'数学',98
union all
select 2,'语文',54
union all
select 2,'化学',97
union all
select 2,'数学',92
union all
select 4,'数学',86
union all
select 5 ,'数学',65
union all
select 6,'语文',76
union all
select 6,'数学',76
union all
select 6,'化学',76

select * from #temptable

declare @str varchar(2000)
set @str = ' select ID '
select @str = @str + '  ,  max(case when course = ''' + course +''' then Point else 0 end )  as   ''' + course + '''' 
from  (select distinct course from #temptable) A  
set @str  = @str + ' from #temptable group by ID '
print @str

exec (@str)

 

 

解决啦,说真的这个不是很复杂的问题, 刚要高兴,有哥们说这种问题在sql2005中很见到就能解决。

简单调查下,发现两个关键字PIVOT/UNPIVOT,可以轻松实现行列转换的需求。 

看来得继续前进啦,看看sql2005如何简单实现的。(未完待续)

转载于:https://www.cnblogs.com/redfox241/archive/2009/04/22/1440888.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值