De foutmelding legt het probleem perfect uit.
In het eerste voorbeeld de ORDER BY item -- CASE WHEN ... END -- verschijnt niet in de SELECT lijst.
In het tweede voorbeeld de ORDER BY item -- a.QuestionID -- verschijnt wel in de SELECT lijst.
Om het eerste voorbeeld te repareren, moet je zoiets als dit doen:
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