我正在使用ASP.NET创建调查页面。它有关于radiobuttonlist(答案)的29个问题,目前按行存储。
原件:
EmpID | Q1 | Q2 | Q3 | ---> Q29
123 | 1 | 3 | 5 |
原始数据使用一个插入子句。
insert into response table (empid,q1,q2,q3 etc) values (@empid,@q1,@q2,@q3)
我想存储结果如:
EmpID | QNum | Result
123 | Q1 | 1
123 | Q2 | 3
123 | Q3 | 5
我是否需要创建单独的插入SQL子句,还是可以循环SQL以使其自动化?
我不介意编写多个插件但看起来效率很低。
insert into response table (empid,QNum,result) values (@empid, 'Q1', @q1)
insert into response table (empid,QNum,result) values (@empid, 'Q2', @q2)
etc etc
此致
尼尔
答案 0 :(得分:2)
如果您使用的是MS SQL服务器,则应该可以使用UNPIVOT function
也许这样的事可能有用吗?
insert into response_table (empid, QNum, Result)
select empid,QNum,result
from (select @empid,@q1,@q2,@q3) p
UNPIVOT
(Result for QNum in ('Q1', 'Q2', 'Q3') ) as unpvt;
Oracle中也有类似的功能。
不幸的是,没有一个用于MySQL。