我正在使用SQL Server 2008,我正在使用导入向导导入数据。
我有来自excel文件的数据,如下所示......
SessionID Email SubmitTime Question1 Question2 Question3
---------- ----- ----------- --------- --------- ----------
54535212 a@b.com 12/21/2011 Yes No Yes
54532342 c@d.com 12/22/2011 Yes Yes Yes
54535288 e@f.com 12/23/2011 No No Yes
54532399 g@h.com 12/24/2011 No Yes Yes
现在我想将它存储在我的数据库中,以便我可以轻松访问数据。我想我应该制作Users Table
,Questions Table
,Answers Table
,Submitted Table
。出于我的目的,提交的表可以成为用户表的列。
User
`Email`
`Submitted`
`SessionID`
Question
`Question1`
`Question2`
`Question3`
Answer
`Email`
`Question`
`Answer`
如何使用Excel文档中的查询填充答案表?或者导入时从Excel文档创建的初始表?这似乎是一个简单的问题,但解决方案是出于某种原因让我不知所措。谢谢你的帮助!
答案 0 :(得分:1)
您的数据结构有点搞砸了。如果您有Question1
到Question3
的三列,那么您需要一个SurveyID
列或类似的内容来标识唯一的组合。然后,您的答案表将包含UserID
,SurveyID
,Answer1
,Answer2
和Answer3
列。
如果您的Question
表格中有一个Question
列和一个QuestionID
列(希望是identity
列,那么它会自动递增,那么您可以执行以下操作:填充Answer
表中的Import
表:
insert into answer (userid, questionid, answer)
select
u.userid,
q.questionid,
case
when q.question = 'Question1' then i.question1
when q.question = 'Question2' then i.question2
when q.question = 'Question3' then i.question3
else null
end as answer
from
import i
inner join users u on
i.email = u.email
cross join question q