2016-10-03 25 views
2

私はASP.NETを使用して調査ページを作成しています。ラジオボタンリスト(回答)よりも29の質問があり、現在は行ごとに保存されています。オリジナル複数のRadioButtonListsとSQLに挿入

EmpID | Q1 | Q2 | Q3 | ---> Q29 
123 | 1 | 3 | 5 | 

元データが1つの挿入句を使用して動作します。

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

このタイプの質問のコードレビューエリアがあります:http://codereview.stackexchange.com/ –

答えて

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の場合はありません。

+0

あのように私はすでにデータをキャプチャしていますが、結果テーブルをピボットしますか? –

+0

あなたもそれをすることができます!がんばろう。 – CGritton

+0

甘い!歓声ミッドナイト! –

関連する問題