我有一张类似于问卷类型的表格。 我的原始表包含 450列和212行。 Slno是回答问卷的人。
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)即(选择*来自问卷调查,其中Q1a = 1且Q2b = 1 )..等..还有更多的组合...... 我已经设计了MS访问所有设计完美的工作,除了一个主要问题(表列数限制为255)。 为了能够将此输入到访问表中,我已插入 450行和212列(现在可以将其输入到访问数据库中)。现在,在获取记录时,我希望记录集将结果转换为我想要的形式,以便我不必更改我的算法或逻辑....如何通过最小的更改实现此目的?这是我第一次使用Access数据库
答案 0 :(得分:0)
您可以使用交叉表查询来生成您期望的内容。您还可以构建transpose function。
无论哪种方式,我认为你将进入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 :(得分:0)
我终于得到了解决方案
我创建了一个SQL语句
select count(*) from T1,T2 WHERE T1.SlNo=T2.SlNo
并添加了我想要的条件
此后它正确......
数据库在开始时由其他工作人员错误地输入,但只是为了丢掉一周的工作并不好,所以不得不坚持这个设计......下周致命的......现在它正在工作: ):)