【发布时间】:2011-04-29 13:13:40
【问题描述】:
CREATE TABLE Student_Exam(
Exam_ID INTEGER,
S_ID INTEGER,
Primary Key (Exam_ID, S_ID),
Foreign Key (Exam_ID) References Exams(Exam_ID),
Foreign Key (S_ID) References Students(S_ID),
Pass TEXT
);
CREATE TABLE Students(
S_ID INTEGER PRIMARY KEY,
First_Name TEXT,
Surname TEXT
);
CREATE TABLE Exams(
Exam_ID INTEGER PRIMARY KEY,
Date_Taken DATE
);
我该如何纠正这个问题?
SELECT MAX(Students.S_ID) AS S_ID, **count(Pass="Yes")** AS No_of_Exams_Taken
FROM Student_Exam, Students, Exams
WHERE Students.S_ID=Student_Exam.S_ID And Exams.Exam_ID=Student_Exam.Exam_ID And (Exams.Date_Taken)>=#1/1/2010# And (Exams.Date_Taken)<=#12/31/2010#
GROUP BY Student_Exam.S_ID;
我想计算每个学生通过的考试次数? SELECT 命令中的计数应该如何?
SELECT Student.S_ID, COUNT(*) AS Final_Exam_Level 从学生,考试,Student_Exam WHERE (Student.S_ID)=Student_Exam.S_ID 和 ((Exams.Exam_ID)=Student_Exam.Exam_ID) 并且(Exams.Date_Taken)
以上是正确的查询
【问题讨论】:
-
分组和总结是报告做得很好的事情,所以你不应该在报告中这样做(好吧,你可能需要这样做,但很可能不需要)。停止构建报表,而是构建一个返回正在汇总的数据的 SQL SELECT,然后尝试将其用作报表的 Recordsource。
标签: sql ms-access count if-statement