SQL2000 和 SQL2005 下 行列转换 示例[转]
2009-02-21 09:00
375 查看
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
*/
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
*/
相关文章推荐
- SQL2000 和 SQL2005下行列转换示例
- SQL2000 和 SQL2005 下 行列转换 示例
- SQL2000 和 SQL2005 下 行列转换 示例
- SQL2000 和 SQL2005 下 行列转换 示例
- SQL2000 和 SQL2005 下 行列转换 示例
- SQL2000 和 SQL2005下行列转换示例
- 【转】普通行列转换(SQL2000 & SQL2005)
- sql2000,sql2005 行列转换(又称横竖转换,胖瘦转换)
- sql2000和sql2005装在一台机器上和两版本之间的转换
- 【转】sql2005 转换到 sql2000
- sql2005 转换到 sql2000
- SQL2005转换到SQL2000
- SQL2005行列转换的另一方法 PIVOT
- sql2005《新》行列转换的使用(使用pivot函数)
- SQL行列转换-合并列值(示例)
- PostgreSQL实现交叉表(行列转换)的5种方法示例
- 数据库行列转换(示例mySQL 5.1)
- --行列转换示例1
- SQL Server 行列转换示例
- 将BlogEngine中的SQL2005的SQL installation script转换成SQL2000