Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Benutzerdefinierte SQL-Reihenfolge

Die Fehlermeldung erklärt das Problem perfekt.

Im ersten Beispiel der ORDER BY item -- CASE WHEN ... END -- erscheint nicht im SELECT Liste.

Im zweiten Beispiel der ORDER BY item -- a.QuestionID -- erscheint im SELECT Liste.

Um das erste Beispiel zu korrigieren, müssen Sie etwa so vorgehen:

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