隐藏页面特效

sql CASE函数用法、利用CASE函数行转列

一,CASE写法

CASE函数格式:

    case [字段]

      when 表达式 then 显示数据

      when 表达式 then 显示数据

      else 显示数据

    end

举例:如图我们stud 表中studentNo字段有1,2,3,我们想用1代表男,2代表女来区分性别

执行的sql如下:

SELECT case StudentNo when '1' then '' --1代表男 when '2' then '' --2代表女 else '外星人' --除开1和2,其他都是外星人
end as '性别',StudentName from stud

执行结果:

二,利用CASE函数行转列

建立演示数据:

CREATE TABLE [StudentScores] ( [UserName] NVARCHAR(20), --学生姓名 [Subject] NVARCHAR(30), --科目 [Score] FLOAT, --成绩 ) INSERT INTO [StudentScores] SELECT 'Nick', '语文', 80 INSERT INTO [StudentScores] SELECT 'Nick', '数学', 90 INSERT INTO [StudentScores] SELECT 'Nick', '英语', 70 INSERT INTO [StudentScores] SELECT 'Nick', '生物', 85 INSERT INTO [StudentScores] SELECT 'Kent', '语文', 80 INSERT INTO [StudentScores] SELECT 'Kent', '数学', 90 INSERT INTO [StudentScores] SELECT 'Kent', '英语', 70 INSERT INTO [StudentScores] SELECT 'Kent', '生物', 85

建立好表和插入数据后我们看到的数据是这样的

如果我想知道每位学生的每科成绩,而且每个学生的全部成绩排成一行,这样方便我查看、统计,导出数据,执行如下sql

select UserName, MAX(case subject when '语文' then Score else '0' end ) as '语文',
MAX(case subject when '数学' then Score else '0' end ) as '数学', MAX(case subject when '英语' then Score else '0' end ) as '英语', MAX(case subject when '生物' then Score else '0' end ) as '生物' from StudentScores group by UserName

执行结果:

 

 

参考地址:https://www.cnblogs.com/kerrycode/archive/2010/07/28/1786547.html


__EOF__

本文作者李潇潇的Blog
本文链接https://www.cnblogs.com/Lxxv5/p/15908870.html
关于博主:李潇潇的Blog
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   听见你的声音、潇  阅读(607)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示