View 用于匹配字段的SQLITE用例

View 用于匹配字段的SQLITE用例,view,sqlite,case,View,Sqlite,Case,我有一个带有学生姓名的SQLite数据库。每个学生有不同的班级。我有一个包含学生成绩和班级的表格,还有一个按类型定义班级的表格。我想运行一个查询(我将保存为CSV,在OpenOffice中用作邮件合并的Excel文档)。我需要列出学生的数学成绩、历史成绩、科学成绩和英语成绩。然而,有些学生的数学、科学、英语或历史课不止一门。 (如何)我可以创建一个CASE语句(可能还有一个视图),例如,如果确实有多个数学类,那么它可以作为Math_class_2列在视图中?这个想法是让SQL完成工作,而不是为它

我有一个带有学生姓名的SQLite数据库。每个学生有不同的班级。我有一个包含学生成绩和班级的表格,还有一个按类型定义班级的表格。我想运行一个查询(我将保存为CSV,在OpenOffice中用作邮件合并的Excel文档)。我需要列出学生的数学成绩、历史成绩、科学成绩和英语成绩。然而,有些学生的数学、科学、英语或历史课不止一门。
(如何)我可以创建一个CASE语句(可能还有一个视图),例如,如果确实有多个数学类,那么它可以作为Math_class_2列在视图中?

这个想法是让SQL完成工作,而不是为它完成工作

假设有三张表:

学生(学生编号、学生姓名)

类(类号,类名)

成绩(班级号、学生号、年级)

查询将是:

SELECT StudentName, group_concat(ClassName || "," || Grade)
FROM Student
INNER JOIN Result ON Result.StudentNo=Student.StudentNo
INNER JOIN Class ON Result.ClassNo=Class.ClassNo
GROUP BY Student.Studentno;
(组_concat是SQlite的另一个后期添加。见3.7)

下面是我使用的所有命令的转储:

CREATE TABLE [Student] (
[StudentNo] INTEGER  NOT NULL PRIMARY KEY,
[StudentName] TEXT  NULL
);
INSERT INTO "Student" VALUES(1,'Jimmy');
INSERT INTO "Student" VALUES(2,'Bob');
INSERT INTO "Student" VALUES(3,'Anna');
CREATE TABLE [Class] (
[ClassNo] INTEGER  NOT NULL PRIMARY KEY,
[ClassName] TEXT  NULL
);
INSERT INTO "Class" VALUES(1,'English');
INSERT INTO "Class" VALUES(2,'Algebra');
INSERT INTO "Class" VALUES(3,'Geometry');
INSERT INTO "Class" VALUES(4,'Pre-Cal');
CREATE TABLE [Result] (
[StudentNo] INTEGER  NOT NULL,
[ClassNo] INTEGER  NOT NULL,
[Grade] INTEGER  NOT NULL,
PRIMARY KEY ([StudentNo],[ClassNo])
);
INSERT INTO "Result" VALUES(1,1,70);
INSERT INTO "Result" VALUES(1,2,75);
INSERT INTO "Result" VALUES(1,3,80);
INSERT INTO "Result" VALUES(2,1,85);
INSERT INTO "Result" VALUES(2,2,90);
INSERT INTO "Result" VALUES(3,4,95);
运行查询将返回以下结果(您可能需要调整分隔字符):

Jimmy,英语,70,代数,75,几何,80

Bob,英语,85岁,代数,90岁

安娜,加州大学预科,95分

我目前正在开发一款使用sqlite数据库的android应用程序。 我需要使用一个案例陈述,它成功了

表中有一个列,其时间频率值以毫秒为单位,但对于最终用户,我需要以更容易理解的方式显示信息,因此这是我使用的sql语句(顺便说一句,该语句是以编程方式组合在一起的……它不是硬编码的):-p


我不太清楚你的意思。请给我们一些基本的表定义和所需输出的示例好吗?我做了一个Python解决方案。。。不完全是我想要的,但是足够近了。是否可以将以下代码复制为使用案例语句创建的视图:
cursor.execute('SELECT DISTINCT student_id,course_title,final_grade FROM math_class')作为光标中的行:student_id=row[0]course_title=row[1]final_grade=row[2]if student\u id==旧的if student\u id:if student\u id!=第二轮id:。。。write_string=“INSERT INTO math_class_2_2010…”
有一个表格:表格eoygrades_2010(学生id整型字符(6)不为空,课程名称VARCHAR(16),年级整型字符(3));我想创建一个case语句来显示一个没有显示的数学类。而不是:Eddie,代数,90 Eddie,几何,80我可以打印一行Eddie,代数,90,几何,80,对于那些只有一个数学类的人:Suzy,Pre-Cal,85,,啊!我明白了。好吧,不幸的是,我不相信SQLite有一个
CASE
语句。构建几个查询可能不是个坏主意……SQLite现在有一个CASE语句。我记得它没有CASE语句(或者至少没有接近MySQL的级别),但现在似乎至少有一些基本的CASE功能。谁知道呢,也许在没有人查看时,JOIN语句的其余部分会出现。。。
SELECT 
case when alarm_time_frequency='0' then 'Not Used' 
when alarm_time_frequency='300000' then '5 min' 
when alarm_time_frequency='600000' then '10 min' 
when alarm_time_frequency='900000' then '15 min' 
when alarm_time_frequency='1800000' then '30 min' 
when alarm_time_frequency='3600000' then '1 hour' 
when alarm_time_frequency='7200000' then '2 hours' 
when alarm_time_frequency='10800000' then '3 hours' 
when alarm_time_frequency='14400000' then '4 hours' 
when alarm_time_frequency='21600000' then '6 hours' 
when alarm_time_frequency='28800000' then '8 hours' 
when alarm_time_frequency='43200000' then '12 hours' 
when alarm_time_frequency='86400000' then '24 hours' 
end 
as alarm_time_frequency FROM ALARMS 

I hope this helps...