竖表转横表
来源:互联网 发布:js cookie设置 编辑:程序博客网 时间:2024/05/18 00:48
今天遇到一个要求将竖表转换成横表。以前看过竖表转横表但没写过,现记录下来以供学习。
任务大体要求如下:
========================
教师号 星期号 是否有课
1 2 有
1 3 有
2 1 有
3 2 有
1 2 有
写一条sql语句让你变为这样的表
教师号 星期一 星期二 星期三
1 2 1
2 1
3 1
-------------------------------------------
建表:
create table teac_info(
teac_no number,
day_no number,
arrg_mode varchar2(5))
添加数据:
insert into teac_info values(1,2,'有');
insert into teac_info values(1,3,'有');
insert into teac_info values(2,1,'有');
insert into teac_info values(3,2,'有');
insert into teac_info values(1,2,'有');
开始写的时候只写了在oracle平台上的sql语句,在写好后在网上搜索到一些在ms sql平台的语句。做了一个整理,先将两个平台的都写出来供参考:
(1)、oracle 10g,在此平台上用的是oracle的decode函数(在此平台上的语句执行通过):
select teac_no as 教师编号
,sum(decode(day_no,1,1)) as 星期一
,sum(decode(day_no,2,1)) as 星期二
,sum(decode(day_no,3,1)) as 星期三
from teac_info
where arrg_mode ='有'
group by teac_no
输出如下:
教师编号 星期一 星期二 星期三
---------- ---------- ---------- ----------
1 2 1
2 1
3 1
(2)、ms sql平台上的语句(此语句是根据网上一位同志的参考写的,没有执行)
select teac_no as 教师编号,
sum(case day_no when 1 then 1 end ) 星期一,
sum(case day_no when 2 then 1 end ) 星期二,
sum(case day_no when 3 then 1 end ) 星期三,
from teac_info
where arrg_mode ='有'
group by teac_no
对ms sql平台的这条语句不很熟悉,为了方便对ms sql平台语句的理解,我将原来的语句粘贴下来:
(以下资料来自:http://blog.sina.com.cn/s/blog_567a8f380100cr2g.html)
测试数据:
CREATE TABLE test (name char(10),subject char(10),score int)
go
insert test values( '张三 ', '语文 ',80)
insert test values( '张三 ', '数学 ',86)
insert test values( '张三 ', '英语 ',75)
insert test values( '李四 ', '语文 ',78)
insert test values( '李四 ', '数学 ',85)
insert test values( '李四 ', '英语 ',78)
--想变成以下效果
--
-- 姓名 语文 数学 英语
-- 张三 80 86 75
-- 李四 78 85 78
select name,
sum(case t.subject when '语文' then t.score else 0 end ) 语文,
sum(case t.subject when '数学' then t.score else 0 end ) 数学,
sum(case t.subject when '英语' then t.score else 0 end ) 英语
from test t
group by t.name
- 竖表转横表
- 动态竖表转横表
- 关于竖表转横表的问题
- 关于竖表转横表的问题
- 关于竖表转横表的问题
- 关于竖表转横表的问题
- mssql 竖表转横表实例代码
- oracle SQL竖表转横表
- Oracle 实现竖表转横表sql
- oracle SQL竖表转横表
- 关于竖表转横表的问题【转】
- oracle使用decode实现竖表转横表 (列转行)
- ITSM系统_CMDB设计_业务要件
- 项目管理计划及实施建议
- 来自Amazon的经验:七招提高大型网络服务性能
- HTML FORM元素名用数组
- Linux下Mysql的安装(二)
- 竖表转横表
- bootloader技术内幕
- 很纯很暧昧 推荐阅读
- socket编程常用函数总结
- NET framework 不懂版本的 程序运行
- Linux 中 RPM 命令参数使用详解
- 清除系统LJ
- ASCII码对照表
- 贺08新春