[sql] SQL 다중 열 순서

SQL의 여러 열을 기준으로 다른 방향으로 정렬하려고합니다. column1내림차순과 column2오름차순으로 정렬됩니다.

어떻게해야합니까?



답변

ORDER BY column1 DESC, column2

이렇게 하면 두 개 이상의 행에 대한 필드가 같을 때마다 column1(내림차순) 모든 항목을 정렬 한 다음 column2(기본값은 오름차순) 정렬 column1합니다.


답변

다른 답변에는 구체적인 예가 없으므로 여기에 있습니다.

다음과 같은 People 테이블이 제공됩니다.

 FirstName |  LastName   |  YearOfBirth
----------------------------------------
  Thomas   | Alva Edison |   1847
  Benjamin | Franklin    |   1706
  Thomas   | More        |   1478
  Thomas   | Jefferson   |   1826

아래 쿼리를 실행하면 :

SELECT * FROM People ORDER BY FirstName DESC, YearOfBirth ASC

결과 집합은 다음과 같습니다.

 FirstName |  LastName   |  YearOfBirth
----------------------------------------
  Thomas   | More        |   1478
  Thomas   | Jefferson   |   1826
  Thomas   | Alva Edison |   1847
  Benjamin | Franklin    |   1706


답변

SELECT  *
FROM    mytable
ORDER BY
        column1 DESC, column2 ASC


답변

여러 열 순서는 두 열의 해당 값에 따라 다릅니다. 다음은 알파벳과 숫자로 이름이 지정된 두 개의 열이 있고이 두 열의 값이 ascdesc 순서 인 테이블 예 입니다.

여기에 이미지 설명을 입력하십시오

이제 아래 명령을 실행 하여이 두 열에서 Order By 를 수행합니다.

여기에 이미지 설명을 입력하십시오

이제 다시이 두 열에 새 값을 삽입합니다. 여기서 ASC 순서의 알파벳 값은 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

예제 테이블의 열은 다음과 같습니다. 이제 동일한 작업을 다시 수행하십시오.

여기에 이미지 설명을 입력하십시오

첫 번째 열의 값은 desc 순서이지만 두 번째 열은 ASC 순서가 아닙니다.


답변

여러 조건에서 여러 주문을 사용할 수 있습니다.

ORDER BY 
     (CASE 
        WHEN @AlphabetBy = 2  THEN [Drug Name]
      END) ASC,
    CASE 
        WHEN @TopBy = 1  THEN [Rx Count]
        WHEN @TopBy = 2  THEN [Cost]
        WHEN @TopBy = 3  THEN [Revenue]
    END DESC 


답변