Я бы подумал, что сообщение самоочевидно.
Вы выбрали отдельное имя для a.QuestionID, a.QuestionName, b.AnswerID и b.AnswerName.Следовательно, могут быть строки данных с одинаковыми соответствующими значениями для каждого из этих полей, но разные для вашего оператора case
.
Учитывайте это
a.QuestionID a.QuestionName b.AnswerID b.AnswerName [case statement]
1 'One' 2 'Two' 0
1 'One' 2 'Two' 1
Какзапрос знать, какое значение в последнем столбце использовать в порядке?Это 0?Это 1?Проще говоря, он не может определить, поэтому он не может его использовать, поэтому возникает ошибка.
Второй пример подходит, потому что a.QuestionID действительно появляется в списке SELECT, и запрос может успешно применятьсязаказ.