有主表“考生资料表”和子表“考生成绩表”如下
“考生资料表”有字段:
[考生ID]、[考生姓名]
1 张三
2 李四
“考生成绩表”有字段:
[考生ID]、[科目]、[成绩是否合格]
1 A 1
1 B 0
2 A 1
2 B 1
希望建立一个视图如下
[考生ID]、[考生姓名]、[考生是否合格](这个字段的值通过子表计算)
1 张三 0
2 李四 1
怎么实现呀?我只会用以下方法计算出不合格记录的数量,但不会使用IIF把值大于0的变成“不合格”和等于0的变成“合格”
SELECT [考生ID],[科目],(SELECT COUNT(成绩是否合格)as [不合格记录数] FROM 考生成绩表 WHERE (考生ID = 考生资料表.生ID) AND (成绩是否合格 = 0)) FROM 考生资料表
“考生资料表”有字段:
[考生ID]、[考生姓名]
1 张三
2 李四
“考生成绩表”有字段:
[考生ID]、[科目]、[成绩是否合格]
1 A 1
1 B 0
2 A 1
2 B 1
希望建立一个视图如下
[考生ID]、[考生姓名]、[考生是否合格](这个字段的值通过子表计算)
1 张三 0
2 李四 1
怎么实现呀?我只会用以下方法计算出不合格记录的数量,但不会使用IIF把值大于0的变成“不合格”和等于0的变成“合格”
SELECT [考生ID],[科目],(SELECT COUNT(成绩是否合格)as [不合格记录数] FROM 考生成绩表 WHERE (考生ID = 考生资料表.生ID) AND (成绩是否合格 = 0)) FROM 考生资料表
解决方案 »
- 数据查询,高手来帮忙
- 查询上个月的月初到月末应该怎么写语句?
- 求改一个SQL语句!!!
- 作业问题:我在本机往远程数据库实时填加记录,语句在查询分析器里可以执行成功,但是一放到作业步骤里时,就不能执行。郁闷死了
- 在線急等, 求助一個update 語句
- 高难度sql语句
- 求助:用程序实现系统表,不要代码,只要思路,在线等!
- 想做一个从数据库取字段自动生成实体的工具,请问该如何获取数据库的字段的"列明"和"描述信息"啊(内详)
- 紧急求救,sql server莫名停止--由于登陆失败而无法启动服务--有谁帮帮我:(((
- liliah请教 库设计:我现在有计算机表(Sb_id,..),UPS表(Sb_id,..),打印机表(SB_id,..)。另有维修记录表(SB_id,date,result)。它们是什么关系?
- 如何在查询分析器中实现:一次插入,马上查询呢?
- xp上装sql 2000,数据库有办法超2G限制么?
[/align]
CASE [成绩是否合格]
WHEN 0 THEN '合格'
ELSE '不合格'
END
from 考生资料表 s inner join 考生成绩表 c on s.考生ID=c.考生ID[align=center]==== 思想重于技巧 ====
[/align]
等价于SQL:
case when 1>0 then 1 else 0 end
a.[考生姓名],
b.[科目],
sum(case when b.成绩是否合格= 0 then 1 else 0 end) as 成绩是否合格
FROM 考生资料表 a
right join 考生成绩表 b on a.考生ID = b.考生ID
a.[考生姓名],
b.[科目],
abs(成绩是否合格 - 1) as 成绩是否合格
FROM 考生资料表 a
right join 考生成绩表 b on a.考生ID = b.考生ID
abs(成绩是否合格 - 1) ===> 1 - 成绩是否合格
我也认为逻辑不通。从IIF函数来推断,我的理解为:如果及格的科目数大于不及格的科目数,视为及格,否则为不及格。