2009-11-09 3 views

답변

1
SELECT CASE WHEN X >= Y && X >= Z THEN X 
      WHEN Y >= Z && Y >= X THEN Y 
      ELSE Z END, 
CASE WHEN X >= Y && X < Z THEN X 
    WHEN X >= Z && X < Y THEN X 
    WHEN Y >= X && Y < Z THEN Y 
    WHEN Y >= Z && Y < Z THEN Y 
    ELSE Z END, 
CASE WHEN X <= Y && X <= Z THEN X 
    WHEN Y <= Z && Y <= X THEN Y 
    ELSE Z 
FROM Table 
ORDER BY CASE WHEN X >= Y && X >= Z THEN X 
      WHEN Y >= Z && Y >= X THEN Y 
      ELSE Z END; 

, 즉 작동합니다. 나는 성과에 대한 약속을하지 않을 것이다. 이것이 Microsoft SQL 인 경우 행 당 값을 순서대로 저장 한 두 번째 테이블을 만들고 두 번째 테이블을 최신 상태로 유지하도록 트리거를 설정해야합니다.

이제 세 개의 열이 있다면 분명히 작동 할 것입니다. 등

------------------------------ 
| row_id | column_id | value | 
------------------------------ 
| 1 | 'X'  | 7 | 
| 1 | 'Y'  | 8 | 
| 1 | 'Z'  | 9 | 
| 2 | 'X'  | 3 | 

... 그리고 4 열은 두통의 더, 당신은이 같은 테이블로 정보를 저장하는 새로운 방법을 생각하기 시작해야 할 곳이 정말. 당신은 어떤 종류의 일을,이 형식의 데이터를했으면

:

SELECT row_id, value FROM TABLE ORDER BY row_id, value DESC; 

갑자기 슈퍼 쉽게된다.

0

John의 답변에서와 같이 특정 수의 열을 코딩 할 수 있지만 일반적인 경우에는 쉽게 수행 할 수 없습니다. 이것이 요구 사항이라면 스키마를 지원하기 위해 redsigning을 고려할 것입니다.

관련 문제