sql 2005 数据表行列转换显示

1.创建 学生成绩表
2.填充 部分数据
3.一般的直接查询
4.Sql 2000 下 行列转换
5.Sql 2005 下 PIVOT
------------
/*
--创建 学生成绩表

CREATE TABLE [StuSources] (
 [StuID] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [StuName] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [KeCheng] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [ChengJi] [float] NOT NULL
) ON [PRIMARY]

*/


/*
--填充 部分数据

INSERT INTO StuSources
SELECT '001','张三','语文',81
UNION SELECT  '001','张三','数学',71
UNION SELECT  '001','张三','历史',71
UNION SELECT  '002','李四','语文',82
UNION SELECT  '002','李四','数学',72
UNION SELECT  '002','李四','历史',72

*/

/*
-- 一般的直接查询

SELECT * FROM StuSources

-- 结果
StuID  StuName  KeCheng  ChengJi
001        张三       历史       71.0
001        张三       数学       71.0
001        张三       语文       81.0
002        李四       历史       72.0
002        李四       数学       72.0
002        李四       语文       82.0

*/

/*
-- Sql 2000 下 行列转换

SELECT StuName,
'语文' = Sum(Case KeCheng WHEN '语文' THEN ChengJi ELSE 0 END ) ,
'数学' = Sum(Case KeCheng WHEN '数学' THEN ChengJi ELSE 0 END ),
'历史' = Sum(Case KeCheng WHEN '历史' THEN ChengJi ELSE 0 END )
FROM StuSources
GROUP BY StuName

-- 结果
StuName  语文 数学 历史
李四       82.0 72.0 72.0
张三       81.0 71.0 71.0

*/

/*
-- Sql 2005 下 PIVOT 

SELECT StuName,[语文] AS '语文',
[数学] AS '数学',[历史] AS '历史'
FROM StuSources s
PIVOT (SUM (ChengJi) FOR KeCheng IN ([语文],[数学],[历史]) )AS pvt

*/
最近在做数据报表方面的工作,偶尔使用了数据表行列数据转换的方法。上面的示例是经过验证的,可以正常使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UniMagic

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值