我有一張表,我填充人口統計信息,然後使用動態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 |
任何人都可以幫我解決這個問題嗎?
「choice_16」有多少可能的值? – arunmoezhi
在這種情況下,我認爲8。它是其中之一「你是西班牙人還是不是?」哦,無論哪種方式「點擊適用於你的每個種族」。 「拒絕回答」總是一個選擇。 – gooddadmike