SQL SERVER 2005 СЛУЧАЙ, КОГДА КОНЕЦ - PullRequest
1 голос
/ 29 марта 2012

Я выполняю следующий запрос ..

Select T1.* from T1 
LEFT JOIN T2 ON T1.C1 = T2.C1 
LEFT JOIN T3 ON T2.C3 = T3.C3
ORDER BY Case When T1.C1 = 'ABC' THEN 'XYZ' END  AS COMMENTS  

Это дает мне синтаксическую ошибку рядом с AS. Невозможно выяснить ошибку.

Ответы [ 2 ]

4 голосов
/ 29 марта 2012

Вам не нужен псевдоним AS при использовании регистра в порядке

Select T1.* from T1 
LEFT JOIN T2 ON T1.C1 = T2.C1 
LEFT JOIN T3 ON T2.C3 = T3.C3
ORDER BY Case When T1.C1 = 'ABC' THEN 'XYZ' END 
3 голосов
/ 29 марта 2012

Это потому, что вы пытаетесь присвоить псевдоним предложению ORDER BY - это недопустимо, и я не уверен, чего вы хотите достичь?

Вам либо нужно:

Select T1.* from T1 
LEFT JOIN T2 ON T1.C1 = T2.C1 
LEFT JOIN T3 ON T2.C3 = T3.C3
ORDER BY Case When T1.C1 = 'ABC' THEN 'XYZ' END

Или, если вы хотите, чтобы это значение CASE также было возвращено в SELECT, вам необходимо:

Select T1.*, Case When T1.C1 = 'ABC' THEN 'XYZ' END AS COMMENTS
from T1 
    LEFT JOIN T2 ON T1.C1 = T2.C1 
    LEFT JOIN T3 ON T2.C3 = T3.C3
ORDER BY Case When T1.C1 = 'ABC' THEN 'XYZ' END

Кроме того, опять не уверен в намерении, так что это зависит, но вам может потребоваться ДРУГОЕ на этом СЛУЧАЕ ... например,

ORDER BY CASE WHEN T1.C1 = 'ABC' THEN 'XYZ' ELSE T1.C1 END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...