这是我的表结构:
表:markdetails
## studID ## ## subjectID ## ## marks ## A1 3 50 A1 4 60 A1 5 70 B1 3 60 B1 4 80 C1 5 95
表:学生信息
实际结构:
## studID ## ## name ## A1 Raam B1 Vivek c1 Alex
我想结果集看起来像这样:
表:学生资料
## studID ## ## name## ## subjectID_3 ## ## subjectID_4 ## ## subjectID_5 ## A1 Raam 50 60 70 B1 Vivek 60 80 null c1 Alex null null 95
我如何在sqlite中完成这个?
首先,您需要将当前表更改为临时表:alter table student_info rename to student_name
然后,您将要重新创建student_info:
create table student_info add column ( stuID VARCHAR(5) PRIMARY KEY,name VARCHAR(255),subjectID_3 INTEGER,subjectID_4 INTEGER,subjectID_5 INTEGER)
然后,填充student_info:
insert into student_infoselect u.stuID,u.name,s3.marks as subjectID_3,s4.marks as subjectID_4,s5.marks as subjectID_5from student_temp u left outer join markdetails s3 on u.stuID = s3.stuID and s3.subjectID = 3 left outer join markdetails s4 on u.stuID = s4.stuID and s4.subjectID = 4 left outer join markdetails s5 on u.stuID = s5.stuID and s5.subjectID = 5
现在,只要放你的临时表:
drop table student_temp
这就是您如何快速更新您的表。
sqlite缺少一个枢纽功能,所以你可以做的最好是硬编码一些左连接。左连接将匹配其连接条件中的任何行,并从不符合第二个表的连接条件的第一个或左侧表中的任何行返回null。
总结以上是内存溢出为你收集整理的数据透视SQLite全部内容,希望文章能够帮你解决数据透视SQLite所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)