database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 6307 게시물 읽기
No. 6307
[질문] 3개의 컬럼 값(숫자) 정렬하기.?
작성자
김현기(eclipse4j)
작성일
2012-01-10 21:07
조회수
6,465

 c1 | c2 | c3

10 | 11 | 9

10 | 11 | 9

1 | 2 | 3

3 | 1 | 2

 

이런 형태의 테이블 구조에서 select 결과를 

 

r1 | r2 | r3

9 | 10 | 11

9 | 10 | 11

1 | 2 | 3

1 | 2 | 3

 

이렇게 정렬 처리로 가능할까요? case 구문으로 도배를 해야 하는지;;;;; 

 

고맙습니다.

 

이 글에 대한 댓글이 총 2건 있습니다.

case 문 도배가 성능상 제일 유리할 것으로 보입니다. 

우욱님이 2012-01-12 01:14에 작성한 댓글입니다. Edit

더 좋은 방법도 많겠지만

CASE문 아닌 ROW_NUMBER()를 사용해서 한번 해봤습니다.

;
WITH TBL1 AS
(
     SELECT 10 AS C1, 11 AS C2, 9 AS C3 UNION ALL
     SELECT 10 AS C1, 11 AS C2, 9 AS C3 UNION ALL
     SELECT 1 AS C1, 2 AS C2, 3 AS C3 UNION ALL
     SELECT 3 AS C1, 1 AS C2, 2 AS C3
)
, TBL2 AS
(
     SELECT ROW_NUMBER() OVER (ORDER BY C1) AS ROW_NUM
      , C1, C2, C3
     FROM TBL1
)


SELECT MAX(CASE WHEN ROW_NUM2 = 1 THEN C1 ELSE NULL END) AS C1
     , MAX(CASE WHEN ROW_NUM2 = 2 THEN C1 ELSE NULL END) AS C2
     , MAX(CASE WHEN ROW_NUM2 = 3 THEN C1 ELSE NULL END) AS C3  
FROM
(
     SELECT ROW_NUM
          , C1
          , ROW_NUMBER() OVER (PARTITION BY ROW_NUM ORDER BY C1) AS ROW_NUM2
     FROM
     (
          SELECT ROW_NUM, C1 FROM TBL2
          UNION ALL
          SELECT ROW_NUM, C2 FROM TBL2
          UNION ALL
          SELECT ROW_NUM, C3 FROM TBL2
     ) AS B
) AS A
GROUP BY ROW_NUM

향지(jumdol625)님이 2012-01-12 10:35에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6310컬럼의 값을 카운트 하려면? [1]
초보자
2012-01-15
6309
6309select 쿼리 질문입니다. [2]
유재영
2012-01-13
6934
6308ms-sql 동기화 관련 질문
궁금증
2012-01-11
6759
6307[질문] 3개의 컬럼 값(숫자) 정렬하기.? [2]
김현기
2012-01-10
6465
6306sqlserver 2008 노출영역구성
박홍균
2012-01-10
7801
6305이것도 pivot으로 가능한가요? [2]
앤디
2012-01-05
6349
6304테이블 컬럼정보 보기 [1]
초보
2012-01-03
7168
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다