Le message d'erreur explique parfaitement le problème.
Dans le premier exemple, le ORDER BY
élément -- CASE WHEN ... END
-- n'apparaît pas dans le SELECT
liste.
Dans le deuxième exemple, le ORDER BY
élément -- a.QuestionID
-- apparaît dans le SELECT
liste.
Pour corriger le premier exemple, vous devrez faire quelque chose comme ceci :
SELECT DISTINCT a.QuestionID, a.QuestionName, b.AnswerID, b.AnswerName,
CASE WHEN a.QuestionName = 'A' THEN 0
WHEN a.QuestionName = 'B' THEN 1
ELSE a.QuestionID
END
FROM @TempExportList AS a
JOIN tblAnswers AS b
ON a.QuestionID = b.QuestionID
WHERE a.PaperID = @PaperID
ORDER BY CASE WHEN a.QuestionName = 'A' THEN 0
WHEN a.QuestionName = 'B' THEN 1
ELSE a.QuestionID
END