2014-12-16 5 views
0

SQL Server 2012를 사용하고 하위 쿼리의 이름으로 다음 쿼리의 결과를 정렬하려고하지만 항상 SQL 실행 오류가 발생합니다.SQL Server : 중첩 방식으로 정렬하는 방법

누군가 내가 여기서 잘못하거나 잘못하고있는 것을 말해 줄 수 있습니까?

내 쿼리 :이 어떤 도움, 팀에 미리

SELECT A.EmpID, 
     (SELECT B.EmpID, B.LastName + ', ' + B.FirstName AS TM 
     FROM dbo.EmpTable AS B 
     WHERE B.SupEmpID = A.EmpID) 
FROM dbo.EmpTable AS A 
WHERE A.NTID = 'someID' 
ORDER BY B.LastName + ', ' + B.FirstName 

많은 감사합니다.

+0

두 이름 중 하나에 쉼표가 없다고 가정하면 연결을 수행하지 않음으로써 색인이 사용될 확률을 높일 수 있습니다. 조인/그룹화/정렬 (원본 또는 연결 또는 캐스팅과 같은 암시 적으로조차도)을 위해 원본 열에서 함수를 호출하면 데이터베이스에서 해당 인덱스의 일부를 수행하기 위해 인덱스를 사용할 수 없도록 만듭니다. 질의, 속도를 줄이십시오. (글쎄, 옵티마이 저가 때때로 해결할 수 있지만, 관찰하는 것이 좋은 첫 번째 규칙입니다). –

답변

2

열 목록의 상관 된 부속 조회에서 둘 이상의 열을 리턴합니다. 하위 쿼리가 존재합니다 도입되지 않은 경우 오류

당신에게 하나 개의 표현을 제공해야 은 선택 목록에서 지정할 수 있습니다.

하위 쿼리 대신 조인을 사용하는 것이 어떻습니까?

SELECT A.EmpID, 
     B.LastName + ', ' + B.FirstName AS TM 
FROM dbo.EmpTable AS A 
    INNER JOIN dbo.EmpTable AS B 
    ON B.SupEmpID = A.EmpID 
WHERE A.NTID = 'someID' 
ORDER BY B.LastName + ', ' + B.FirstName 
+0

감사합니다. 문제가 해결되어 완벽하게 작동합니다. 최대한 빨리 받아 들일 것입니다. :) – user2571510

관련 문제