★★★★★还是关于CASE的基本运用,可怎么也想不同????

surfl 2003-10-21 10:32:42
★★★★★还是关于CASE的基本运用,可怎么也想不同????

最近在看《一道褒贬不一的SQL考试题》的时候,对其中的CASE好像懂又好像不懂,其实就是不懂!
其中
3、列印所有学生的四门成绩(数学、语文、英语、政治)课程成绩
SELECT 学生ID,MAX(学生姓名) AS 学生姓名
,SUM(CASE 课程ID WHEN 'K1' THEN 成绩 ELSE 0 END ) AS 数学
。。。。。。。。
4、按各科不平均成绩从低到高和及格率的百分数从高到低顺序
SELECT 课程ID,MAX(课程名称) AS 课程名称,AVG(平均成绩) AS 平均成绩
,100* SUM(CASE WHEN 成绩 》=60 TEHN 1 ELSE 0 END )/COUNT(*) AS 及格率

1、上面为什么 THEN后一个是列名,一个是 1呢??
2、怎么条件又时在CASE后,又时在WHEN后呢??
3、由上推广,CASE的基本用法有几种,有没有这方面的代表的例子?
谢谢!!

---------------------------
成绩表
1 S3 王五 K4 政治 53 T4 赵老师
2 S1 张三 K1 数学 61 T1 张老师
3 S2 李四 K3 英语 88 T3 李老师
4 S1 张三 K4 政治 77 T4 赵老师
5 S2 李四 K4 政治 67 T5 周老师
...全文
51 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sale_Boss 2003-10-21
  • 打赏
  • 举报
回复
看看
rocllllll 2003-10-21
  • 打赏
  • 举报
回复
说明你的SQL语法不过关
rocllllll 2003-10-21
  • 打赏
  • 举报
回复
建议查SQL帮助
pengdali 2003-10-21
  • 打赏
  • 举报
回复
使用 CASE
CASE 函数是特殊的 Transact-SQL 表达式,它允许按列值显式可选值。数据中的更改是临时的,没有对数据进行永久更改。例如,CASE 函数可以在 state 列中有 CA 值的行的查询结果集内显示 California。

CASE 函数包含:

CASE 关键字。


需要转换的列名称。


指定要搜索的表达式的 WHEN 子句和指定要替换它们的表达式的 THEN 子句。


END 关键字。


可选的、定义 CASE 函数别名的 AS 子句。
下面示例在查询结果集内显示每个作者所居住州的全名:

SELECT au_fname, au_lname,
CASE state
WHEN 'CA' THEN 'California'
WHEN 'KS' THEN 'Kansas'
WHEN 'TN' THEN 'Tennessee'
WHEN 'OR' THEN 'Oregon'
WHEN 'MI' THEN 'Michigan'
WHEN 'IN' THEN 'Indiana'
WHEN 'MD' THEN 'Maryland'
WHEN 'UT' THEN 'Utah'
END AS StateName
FROM pubs.dbo.authors
ORDER BY au_lname

Sale_Boss 2003-10-21
  • 打赏
  • 举报
回复
up!
sdhdy 2003-10-21
  • 打赏
  • 举报
回复
使用 CASE 处理条件数据
CASE 函数用于计算多个条件并为每个条件返回单个值。CASE 函数通常的用途是使用可读性更强的值替换代码或缩写。下面的查询使用 CASE 函数重命名书籍的分类,以使之更易理解。

USE pubs
SELECT
CASE type
WHEN 'popular_comp' THEN 'Popular Computing'
WHEN 'mod_cook' THEN 'Modern Cooking'
WHEN 'business' THEN 'Business'
WHEN 'psychology' THEN 'Psychology'
WHEN 'trad_cook' THEN 'Traditional Cooking'
ELSE 'Not yet categorized'
END AS Category,
CONVERT(varchar(30), title) AS "Shortened Title",
price AS Price
FROM titles
WHERE price IS NOT NULL
ORDER BY 1

下面是结果集:

category shortened title Price
------------------- ------------------------------ -------
Business Cooking with Computers: Surrep 11.95
Business Straight Talk About Computers 19.99
Business The Busy Executive's Database 19.99
Business You Can Combat Computer Stress 2.99
Modern Cooking Silicon Valley Gastronomic Tre 19.99
Modern Cooking The Gourmet Microwave 2.99
Popular Computing But Is It User Friendly? 22.95
Popular Computing Secrets of Silicon Valley 20.00
Psychology Computer Phobic AND Non-Phobic 21.59
Psychology Emotional Security: A New Algo 7.99
Psychology Is Anger the Enemy? 10.95
Psychology Life Without Fear 7.00
Psychology Prolonged Data Deprivation: Fo 19.99
Traditional Cooking Fifty Years in Buckingham Pala 11.95
Traditional Cooking Onions, Leeks, and Garlic: Coo 20.95
Traditional Cooking Sushi, Anyone? 14.99

(16 row(s) affected)

CASE 函数的另一个用途给数据分类。下面的查询使用 CASE 函数对价格分类。

SELECT
CASE
WHEN price IS NULL THEN 'Not yet priced'
WHEN price < 10 THEN 'Very Reasonable Title'
WHEN price >= 10 and price < 20 THEN 'Coffee Table Title'
ELSE 'Expensive book!'
END AS "Price Category",
CONVERT(varchar(20), title) AS "Shortened Title"
FROM pubs.dbo.titles
ORDER BY price

下面是结果集:

Price Category Shortened Title
--------------------- --------------------
Not yet priced The Psychology of Co
Not yet priced Net Etiquette
Very Reasonable Title You Can Combat Compu
Very Reasonable Title The Gourmet Microwav
Very Reasonable Title Life Without Fear
Very Reasonable Title Emotional Security:
Coffee Table Title Is Anger the Enemy?
Coffee Table Title Cooking with Compute
Coffee Table Title Fifty Years in Bucki
Coffee Table Title Sushi, Anyone?
Coffee Table Title The Busy Executive's
Coffee Table Title Straight Talk About
Coffee Table Title Silicon Valley Gastr
Coffee Table Title Prolonged Data Depri
Expensive book! Secrets of Silicon V
Expensive book! Onions, Leeks, and G
Expensive book! Computer Phobic AND
Expensive book! But Is It User Frien

(18 row(s) affected)


请参见

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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