不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
T-SQL的case函数
编辑:dnawo 日期:2008-08-06
case函数用于计算条件列表并返回多个可能结果表达式之一,下边我们用例子来说明它的两种用法。假设表Table1的数据如下:
id name course total
1 张三 语文 35
2 张三 数学 45
3 张三 英语 60
4 李四 语文 75
5 李四 数学 90
6 李四 英语 80
我们希望根据分数显示不及格、及格、良或优,我们先构造了如下SQL语句:
执行结果:
id name course total result
1 张三 语文 35 未知
2 张三 数学 45 不及格
3 张三 英语 60 及格
4 李四 语文 75 良
5 李四 数学 90 优
6 李四 英语 80 未知
可以看到,上边的case函数是以枚举的方式进行的,当枚举的成员不是有限的时候我们很难去一一列举出来,如上边35显示为未知。下边我们用case函数的另一种方法:
执行结果:
id name course total result
1 张三 语文 35 不及格
2 张三 数学 45 不及格
3 张三 英语 60 及格
4 李四 语文 75 良
5 李四 数学 90 优
6 李四 英语 80 优
需要说明的是,上边两个例子只用于说明case函数的两种用法,而不是用来证明哪种方法比较好,实际运用中我们应根据需要选择使用其中一种。
当然,case函数的魄力还不仅仅于此,假如我们希望在一条记录中显示一个学生各科成绩,应当怎么做呢?试试下边的SQL语句:
执行结果:
姓名 语文 数学 英语
李四 75 90 80
张三 35 45 60
神奇吧!
id name course total
1 张三 语文 35
2 张三 数学 45
3 张三 英语 60
4 李四 语文 75
5 李四 数学 90
6 李四 英语 80
我们希望根据分数显示不及格、及格、良或优,我们先构造了如下SQL语句:
复制内容到剪贴板
程序代码

Select *,
result=case total
when 45 then '不及格'
when 60 then '及格'
when 75 then '良'
when 90 then '优'
else '未知'
end
From Table1
result=case total
when 45 then '不及格'
when 60 then '及格'
when 75 then '良'
when 90 then '优'
else '未知'
end
From Table1
执行结果:
id name course total result
1 张三 语文 35 未知
2 张三 数学 45 不及格
3 张三 英语 60 及格
4 李四 语文 75 良
5 李四 数学 90 优
6 李四 英语 80 未知
可以看到,上边的case函数是以枚举的方式进行的,当枚举的成员不是有限的时候我们很难去一一列举出来,如上边35显示为未知。下边我们用case函数的另一种方法:
复制内容到剪贴板
程序代码

Select *,
result = case
when total<60 then '不及格'
when total=60 then '及格'
when total<80 then '良'
when total>=80 then '优'
else '未知'
end
From Table1
result = case
when total<60 then '不及格'
when total=60 then '及格'
when total<80 then '良'
when total>=80 then '优'
else '未知'
end
From Table1
执行结果:
id name course total result
1 张三 语文 35 不及格
2 张三 数学 45 不及格
3 张三 英语 60 及格
4 李四 语文 75 良
5 李四 数学 90 优
6 李四 英语 80 优
需要说明的是,上边两个例子只用于说明case函数的两种用法,而不是用来证明哪种方法比较好,实际运用中我们应根据需要选择使用其中一种。
当然,case函数的魄力还不仅仅于此,假如我们希望在一条记录中显示一个学生各科成绩,应当怎么做呢?试试下边的SQL语句:
复制内容到剪贴板
程序代码

Select name as '姓名',
sum(case course when '语文' then total end) as '语文',
sum(case course when '数学' then total end) as '数学',
sum(case course when '英语' then total end) as '英语'
From Table1
Group By name
sum(case course when '语文' then total end) as '语文',
sum(case course when '数学' then total end) as '数学',
sum(case course when '英语' then total end) as '英语'
From Table1
Group By name
执行结果:
姓名 语文 数学 英语
李四 75 90 80
张三 35 45 60
神奇吧!
评论: 0 | 引用: 0 | 查看次数: 4756
发表评论
请登录后再发表评论!