1

人口統計情報を詰め込んだテーブルがあり、動的SQLを使用してそこからテーブルを作成しています。人口統計情報はアンケートから取得され、一部のアンケートにはチェックボックスがあります。チェックボックスを使用すると、複数の値を選択できます。

したがって、すべての選択肢をカンマ区切りのリストとして入力する必要があります。

CREATE TABLE Demographics 
  (
    QID NVARCHAR(15)
    ,userid NVARCHAR(50)
    ,question NVARCHAR(800)
    ,choice NVARCHAR(1000)
  )
...
...
--Demographics(QID,userid,question,choice)
--'Insert checkbox (type 5)
INSERT INTO Demographics
SELECT CAST(q.QID AS NVARCHAR(15))
    ,ri.userid
    ,q.QuestionText
    ,ac.Choice
FROM ResponseInfo ri --response details
JOIN Responses r ON ri.ResponseID = r.ResponseID --actual response
JOIN Questions q ON r.QID = q.QID --question info
JOIN AnswerChoices ac ON r.QID = ac.QID --answer choice text
WHERE (q.QuestionTypeID = 5 AND q.QID = ac.QID
AND r.IsOther = 0 
AND q.QID = 16
)
AND ri.userid IN (SELECT userid FROM @Users) AND r.Response = ac.Sequence
ORDER BY ri.userid
...
dynamic sql stuff
...
EXEC sp_exesql @sql

私の結果は次のようになります。

users | question_15 | choice_15 | question_16     | choice_16 |
bill  | age?        | 37        | favorite color? | red       |
bill  | age?        | 37        | favorite color? | green     |

ただし、次のようにする必要があります。

users | question_15 | choice_15 | question_16     | choice_16 |
bill  | age?        | 37        | favorite color? | red,green |    

やってみた

,COALESCE(ac.Choice + ',','') + ac.Choice

それは私にくれました

bill  | age?        | 37        | favorite color? | red,red   |

誰かがこれを整理するのを手伝ってくれますか?

4

2 に答える 2

1

SQL Server を使用しているようです。SQL Server の最近のバージョン (SQL Server 2005 以降など) を使用している場合は、データを XML として保存する方がよいでしょう。

これにより、SQL で XPATH/XQUERY を使用して XML データを操作し、必要なものを取得できます。そのほうがやりやすいと思います。

于 2012-08-23T21:54:42.363 に答える
0

これを見つけました

非常に役立ちます。私のコードは、おそらくいくつかのクリーンアップを使用できます。

于 2012-08-27T16:47:00.223 に答える