MS Access中的列过多时如何转置数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MS Access中的列过多时如何转置数据相关的知识,希望对你有一定的参考价值。
我有一个标准化的表格(“ IRG02_tbl”),其中包含约74K条记录,其中包含考试成绩和解释---我正在尝试使用这些表格为每个学生生成一份报告。在某些情况下,此报告所需的记录源将超过255个字段,因此我试图找到一种解决方法。
数据问题
每个学生每学年(1到5)的考试分数在32到64之间,并且每个分数都有三种解释(一种解释给学生,一种解释给教员,一种针对范围)。有时这些分数是文本/字符串(即论文),但99%的分数是数字/双精度。学生会随着时间的推移重复这些评估,因此每个分数/解释都会附加一个“顺序”字段,以跟踪每个管理过程。因此:五年级的学生可能有320分x 3解释= 960栏/栏。
表结构(IRG02_tbl)
此表中的字段是:
- ID(自动编号/主键)
- StudentID(短文本)
- 顺序(双精度;跟踪管理,即1.0、1.1等)
- AY(长;从1至5学年的查找表中的主键)] >>
- 指标(长;具有分数名称的查找表中的主键)
- Score_Ultimate(加长文本;学生的分数)
- Interpretation_Ultimate(长整数;查找表中的主键,用于分数的解释)
- VarName_Revised(短文本;按学年重新编码度量标准名称,即“ 1_Empathy,2_Empathy”等)]
这是我尝试过的:
交叉表
单个交叉表查询将是理想选择,但在这里对我不起作用,因为(1)分数/解释的数量如此之多; (2)Score_Ultimate字段不能在Access的交叉表中使用; (3)每个分数的三种解释各占一行。由于我无法将所有领域都排得很长,因此下一次我尝试按学年打破记录。
查询
我使用VBA为每个分数生成查询,例如,该查询创建了一个仅包含分数(Empathy)和第一学年解释的单个查询。
SELECT IRG02_tbl.StudentID, IRG02_tbl.AY, IRG02_tbl.Sequence, IRG02_tbl.Metric AS [P1_Empathy Score_label], IRG02_tbl.Score_Ultimate AS [P1_Empathy Score_Scr], Interpretations.Short_Hand AS [P1_Empathy Score_SH], Interpretations.Student_Txt AS [P1_Empathy Score_Std], Interpretations.Advisor_Txt AS [P1_Empathy Score_Adv] FROM Interpretations INNER JOIN IRG02_tbl ON Interpretations.Interpretation_id = IRG02_tbl.Interpretation_Ultimate WHERE (((IRG02_tbl.AY)= 1) AND ((IRG02_tbl.Metric)=6));
这会根据学年生成几十个查询。在刚开始的第一年中,我尝试使用StudentID和Sequence上的外部联接将它们全部链接在一起-这应该使每个学生获得一长行,少于255列。 SQL语句大约有40K个字符,因此我在运行它时还没有在这里发布它,Access只是冻结了。
制作表
我还尝试使用这些查询中的每一个来创建表,然后使用SQL与上述相同的方式将它们联接-仍然冻结。这也使数据库肿,并且首先达到了没有标准化表的目的,但是我认为这样做可以减轻运行SQL的负担。
我显然不在这里,我希望这不是一个愚蠢的问题,但是我已经尝试了所有我所知道的方法-希望得到任何帮助,欢呼声
我有一个标准化的表格(“ IRG02_tbl”),其中包含约74K条记录,其中包含考试成绩和解释---我正在尝试使用这些表格为每个学生生成一份报告。在某些情况下,记录...
irg02_tbl上存在哪些索引?关于解释?什么是解释模式?
以上是关于MS Access中的列过多时如何转置数据的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用数据透视的情况下将行转换或转置为 SQL 中的列?
MS-Access Recordset to Array,值被转置