У меня есть следующий запрос:
SELECT CASE WHEN [Question Order] IN ( 6, 11 )
THEN CASE WHEN [Question Part Label] = 'Other (Please specify):'
THEN [Answer Text]
ELSE [Question Part Label]
END
ELSE 'replace code here'
END,[Respondent ID]
FROM Results
WHERE [Question Order] IN ( 6, 11 ) AND [Answer Label] = 'Yes'
Теперь я хочу заменить этот код, где он говорит «заменить код здесь»
select
stuff((select ','+T2.[Question Part Label] from Results as T2
where T1.[Respondent ID] = T2.[Respondent ID] for xml path(''), type).value('.', 'varchar(max)'), 1, 1, '')
as Label from Results as T1 group by T1.[Respondent ID]
Когда я это сделаю, я получаю следующееошибка
Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
Пример данных:
Respondent ID [Question Order] [Question Part Label] [Answer Text] [Answer Label]
124587 6 It was not clear NULL Yes
124587 6 Did not Undersstand NULL Yes
124589 6 Other (Please specify): Not enough Yes
125654 6 Too Fast NULL Yes
124582 11 Not frequent NULL Yes
Вывод Shpuld будет:
Respondent ID [Question Part Label]
124587 It was not clear,Did not Undersstand
124589 Not Enough
125654 Too Fast
124582 Not frequent
Логика такова, когда порядок вопросов равен 6 или 11, тогда мне нужноотключить [Метка части вопроса], если [Метка части вопроса] имеет несколько значений для одного Respondent_ID, тогда мне нужно объединить их, но когда значение [Метка части вопроса] - Другое (укажите): тогда мне нужно использовать значение изСтолбец с текстом ответа и
Как это исправить?