oracle 查询的时候加条件判断

本文介绍两种使用SQL查询学生不同科目总成绩的方法。方法一利用CASE WHEN语句配合SUM函数实现,方法二采用DECODE函数进行成绩累加。两种方法均可按学生ID分组并计算指定科目的总分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法一.
select a.idcard,
SUM(
CASE WHEN a.subject_code=2 THEN a.SCOPE ELSE 0 END
)

,
SUM(
CASE WHEN a.subject_code=3 THEN a.SCOPE ELSE 0 END
)
,
SUM(
CASE WHEN a.subject_code=4 THEN a.SCOPE ELSE 0 END
)
,
SUM(
CASE WHEN a.subject_code=5 THEN a.SCOPE ELSE 0 END
)
from cm_student_score a

GROUP BY a. idcard


注:使用方法
SUM(
CASE WHEN a.subject_code=2 THEN a.SCOPE ELSE 0 END
)
如果a.subject_code=2则值为a.SCOPE,否则为0
而SUM()这方法是,把里面所有的成绩全部加起来.意思:所有subject_code=2的总成绩

方法二:
SELECT a.idcard,sum(DECODE(subject_code,2,SCOPE,0)) subject_code2,

sum(DECODE(subject_code,2,SCOPE,0)) subject_code3,

sum(DECODE(subject_code,2,SCOPE,0)) subject_code4,

sum(DECODE(subject_code,2,SCOPE,0)) subject_code5

FROM cm_student_score GROUP BY a. idcard

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值