2012-02-21 2 views
1

나는 2 개의 필드로 정렬하려고하는 테이블을 가지고 있는데, 그 중 하나는 대소 문자를 변경하려고합니다. 제품의사용자 지정 orderby SQL 2008

SELECT * WHERE 상태가 특정 값을 가질 때까지 잘 작동 카테고리에 의해 비활성화 = '0'ORDER 상태

. 상태는 xml에서 직접 가져 오며 실제로 변경할 수는 없습니다. 우리는 그 가치가 무엇인지 모른다. 우리가 알고있는 모든 것은 우리가 어떤 순서로 필요로하는 3 가지 특정 용어가 있고, 나머지는 상태에 따라 오름차순으로 정렬된다는 것입니다. 다음

when status='1' we want it to be 1st; 
when status='D' we want it to be 2nd 
when status='2' we want it to be 3rd 

상태로 나머지 순서가 다른 값을 가지고 있기 때문에

..

샘플 출력 :

category | status 
electronic | 1 
electronic | D 
electronic | 2 
electronic | 9 
misc | 1 
misc | 2 
misc | 8 
+0

를 내가 그들을 아무도하지만 일치하는 모든 읽기 정확히 아래의 답에. –

답변

4

이 시도 :

SELECT * 
FROM products 
WHERE disabled='0' 
ORDER BY category, 
     CASE WHEN status = '1' THEN 1 
     WHEN status = 'D' THEN 2 
     WHEN status = '2' THEN 3 
     ELSE 4 END, status 
+0

내가 마지막에 상태가 실종됐다 .. 감사합니다 :) –