一个sql语句

yuwu_zjl 2005-04-05 12:09:33
create table student(
code varchar(20),
name varchar(20),
subject varchar(40),
marking float
)

)
向你请教一个问题:
编码 名称 科目  成绩  
01  小张 语文   70  
01  小张 数学   80
02  小明 语文   90
02  小明 数学   60
.........
对于这个表用SQL语句如何得到
编码 名称 语文 数学 总分
01 小张 70 80 150
02 小明 90 60 150
...全文
80 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dinya2003 2005-04-05
  • 打赏
  • 举报
回复
在我的Blog上面有一篇我的文章,可以参考以下:

http://blog.csdn.net/dinya2003/archive/2004/11/30/198816.aspx
batt 2005-04-05
  • 打赏
  • 举报
回复
select code,name,sum(decode(subject,'数学',marking,0)),sum(decode(subject,'语文',marking,0)),sum(marking)
from student
group by code,name
liuyi8903 2005-04-05
  • 打赏
  • 举报
回复
看错了.我以为是累计.
这样就行了.
SELECT CODE,
NAME,
SUM(DECODE(SUBJECT, '语文', MARKING, 0)) AS 语文,
SUM(DECODE(SUBJECT, '数学', MARKING, 0)) AS 数学,
-- SUM(SUM(MARKING)) OVER(ORDER BY CODE ROWS 1 preceding) AS 总分
SUM(MARKING) 总分
FROM STUDENT
GROUP BY CODE, NAME
liuyi8903 2005-04-05
  • 打赏
  • 举报
回复
SQL> SELECT CODE,
2 NAME,
3 SUM(DECODE(SUBJECT, '语文', MARKING, 0)) AS 语文,
4 SUM(DECODE(SUBJECT, '数学', MARKING, 0)) AS 数学,
5 SUM(SUM(MARKING)) OVER(ORDER BY CODE) AS 总分
6 FROM STUDENT
7 GROUP BY CODE, NAME
8 /

CODE NAME 语文 数学 总分
-------------------- -------------------- ---------- ---------- ----------
01 小张 70 80 150
02 小明 90 60 300

SQL>
liuyi8903 2005-04-05
  • 打赏
  • 举报
回复
SQL> select * from student;

CODE NAME SUBJECT MARKING
-------------------- -------------------- ---------------------------------------- -----------
01 小张 语文 70
01 小张 数学 80
02 小明 语文 90
02 小明 数学 60

SQL>
SQL> SELECT CODE,
2 SUM(DECODE(SUBJECT, '语文', MARKING, 0)) AS 语文,
3 SUM(DECODE(SUBJECT, '数学', MARKING, 0)) AS 数学,
4 SUM(SUM(MARKING)) OVER(ORDER BY CODE)
5 FROM STUDENT
6 GROUP BY CODE
7 /

CODE 语文 数学 SUM(SUM(MARKING))OVER(ORDERBYC
-------------------- ---------- ---------- ------------------------------
01 70 80 150
02 90 60 300

SQL>

17,380

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧