MS Access 2007行到记录集中的列

MS Access 2007行到记录集中的列

问题描述:

我有一张表,它就像一个问卷类型.. 我的原始表包含450列和212行。 Slno是回答问卷的人的id。MS Access 2007行到记录集中的列

SlNo Q1a Q1b Q2a Q2b Q2c Q2d Q2e Q2f .... Q37c <450 columns> 
1    1 
2     1      1   
3  1 
4  1     1 
5  1 

我不得不为这些数据做分析,例如人数谁是男性(Q1A)和谁拥有一条船(提取的Q2b),即(SELECT * FROM问卷,其中Q1A = 1和提取的Q2b = 1 )..等..更多的组合.. 我设计了MS访问所有的设计工作完美,除了一个主要问题(表列的数量限制为255)。 为了能够输入到访问表我已经插入作为450行和212列(现在我可以输入此访问数据库)。现在,在获取记录时,我希望记录集将结果转换为我想要的形式,以便我不必更改我的算法或逻辑....如何以最少的更改实现此目的?这是我第一次使用Access数据库

+0

这是一次性的,还是将在未来使用?如果是后者,那么我肯定会确保以适当的格式收集数据,以便您不必再次修复。 – 2011-06-12 21:20:38

您可能可以使用交叉表查询来生成您所期望的内容。你也可以建立一个transpose function

无论哪种方式,我想你会STIL运行到255列的限制和MS Access使用临时表等

但是,我认为,如果你改变,你会少得多的工作,更好的结果你的桌子的结构。

我认为这就像填充式调查问卷,它主要是多种选择。在这种情况下,而不是记录的结果,我会记录答案的问题

SlNo Q1  Q2 
1  B 
2   B         
3  A 
4  A  C 
5  A 

然后,你必须少得多列的工作。并且你查询Q1 ='A'而不是Q1a = 1。

另一种方法是将表格分成几部分(个人,职业等),然后进行连接,并只显示所需的列(以便不超过255列限制)。

的方式做到这一点,处理更多的问题是对人的表,此问题的基本表,并为响应表

Person 
SlNo PostalCode 
1 90210 
2 H0H 0H0 
3 


Questions 
QID, QTitle, QDesc 
1 Q1a  Gender Male 
2 Q1b  Gender Female 
3 Q2a  Boat 
4 Q2b  Car 


Answers 
SlNo QID Result 
1  2  True 
1  3  True 
1  4  True 
2  1  True 
2  3  False 
2  4  True 

然后,您可以找到通过选择人员问题考生从答案

select * from Person 
where SlNo in (
    select SlNo from Answers, Questions 
    where 
     questions.qid = answers=qid 
     and 
     qtitle = 'Q1a' 
     and 
     answers.result='True') 
and SlNo in (
    select SlNo from Answers, Questions 
    where 
     questions.qid = answers=qid 
     and 
     qtitle = 'Q2a' 
     and 
     answers.result='True') 

列表我终于得到了解决

  1. 我创建了两个表中的一个有225列和其他具有225列 (共450列)
  2. 我创建了一个SQL语句

    select count(*) from T1,T2 WHERE T1.SlNo=T2.SlNo 
    

    ,并加入条件是什么,我想

它之后即将正确这个 ..

该数据库是由其他工作人员在一开始输入数据库,但只是扔掉一周的工作并不好,所以不得不坚持这种设计......致命的是下周..现在它工作:) :)