sql语句 case

本文展示了如何使用SQL的CASE语句进行多科目成绩的聚合统计,通过查询实现对不同科目的最高成绩的提取。

case:

SELECT stdname, 
max( CASE WHEN stdsubject = '语文' THEN  result ELSE 0 END) "语文", 
max( CASE WHEN stdsubject = '数学' THEN  result ELSE 0 END) "数学",
max( CASE WHEN stdsubject = '物理' THEN  result ELSE 0 END) "物理" ,
max( CASE WHEN stdsubject = '化学' THEN result ELSE 0 END)  "化学"
FROM  std 
GROUP BY stdname;

SQL中的`CASE`语句是一种条件表达式,用于在查询中实现逻辑判断功能,类似于编程语言中的`IF-THEN-ELSE`结构。它允许用户根据不同的条件返回不同的结果值,从而在查询过程中实现动态的数据处理和转换。 ### 使用方式 `CASE`语句有两种主要形式:简单`CASE`函数和搜索`CASE`函数。 #### 简单`CASE`函数 这种形式的`CASE`函数通过直接比较一个表达式与一系列可能的值来工作。其基本语法如下: ```sql CASE 测试表达式 WHEN 简单表达式1 THEN 结果表达式1 WHEN 简单表达式2 THEN 结果表达式2 ... [ELSE 结果表达式n] END ``` 例如,如果想要根据字段`a.zt`的不同值来计算不同的计数,可以使用如下SQL语句: ```sql select count(CASE a.zt WHEN '07' THEN a.bs END) as num1, count(CASE a.zt WHEN '11' THEN a.bs END) as num2 from dj_zt a where a.qylx_dm = '03' ``` #### 搜索`CASE`函数 搜索`CASE`函数提供了更大的灵活性,因为它允许使用更复杂的条件判断,不仅仅是简单的等值比较。其语法结构如下: ```sql CASE WHEN 条件1 THEN 结果表达式1 WHEN 条件2 THEN 结果表达式2 ... [ELSE 结果表达式n] END ``` 例如,基于`area_code`字段的不同值返回相应的地区名称: ```sql SELECT '名称'= CASE WHEN dbo.user_info.area_code=3 THEN 'A' WHEN dbo.user_info.area_code=1 THEN 'B' END FROM dbo.user_info; ``` ### 注意事项 - `CASE`语句会从上至下评估条件,一旦找到满足的条件,就会返回相应的结果,并停止进一步评估其他条件。 - 如果没有条件满足且存在`ELSE`分支,则返回`ELSE`后面指定的结果;如果没有`ELSE`分支且没有任何条件满足,则返回`NULL`。 - 在使用`CASE`语句时,确保所有`THEN`和`ELSE`子句返回相同类型的数据,或者能够隐式转换为相同的类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值