屹砾

屹砾技术博客,记录生活点滴。
Email/QQ/MSN/GTalk: eli.wuhan@gmail.com

留言簿

积分与排名

Growing & Life

JavaSE & JavaEE

Linux & Unix

时事点评

阅读排行榜

评论排行榜

数据表翻转

数据表翻转

 STUNO CNAME                     MARK
 
----- -------------------- ----------
 1001 CHINESE                      80
 
1001 ENGLISH                      80
 
1001 MATH                         90
 
1002 CHINESE                      88
 
1002 ENGLISH                      87
 
1002 MATH                         90
 
1003 CHINESE                      89
 
1003 ENGLISH                      87
 
1003 MATH                         84
                        
用SQL显示成这种效果

 学生编号      汉语       英语       数学
 
-------- ---------- ---------- ----------
    1003         89         87         84
    
1001         80         80         90
    
1002         88         87         90

--常规解决方法(适用于所有的数据库)
SELECT DISTINCT A.ID "学生编号", B.MARK "汉语", 
C.MARK "英语", D.MARK "数学"
FROM SCORE A
INNER JOIN SCORE B ON A.ID=B.ID AND B.CNAME='CHINESE'
INNER JOIN SCORE C ON A.ID=C.ID AND C.CNAME='ENGLISH'
INNER JOIN SCORE D ON A.ID=D.ID AND D.CNAME='MATH'
ORDER BY A.ID;

--ORACLE解决方法(仅限于ORACLE数据库)
SELECT ID "学生编号",
SUM(DECODE(CNAME,'CHINESE',MARK,NULL)) "汉语",
SUM(DECODE(CNAME,'ENGLISH',MARK,NULL)) "英语",
SUM(DECODE(CNAME,'MATH',MARK,NULL)) "数学"
FROM SCORE GROUP BY ID ORDER BY ID;

posted on 2008-07-10 19:11 屹砾 阅读(26) 评论(0)  编辑  收藏 所属分类: Database


标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
 
 
相关链接:
网站导航: