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 4738 게시물 읽기
No. 4738
데이타를 종류별로 정렬하기
작성자
nsh
작성일
2009-04-27 11:33
조회수
6,772

데이타1  데이타2    데이타3
==========================
바                          10       
나           2
아           7
가                           2

다           5
라                           9
아                           4 
사          1                          

요런식으로 있다면, order by 를 통해서

데이타1  데이타2    데이타3
==========================
나           2        
다           5
사           1
아           7

가                          2
라                          9
바                          10
아                           4

즉, 데이타2, 데이타3 종류별로 묶고, 그에 대한 데이타1 를 가나다 순으로 정렬하고 싶습니다.

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

비어있는 값을 NULL이라고 가정했습니다.

정렬을 위해서 쿼리 시에 가공의 컬럼을 하나 만듭니다.

이러면 끝!!


SELECT 데이터1, 데이터2, 테이터3

FROM (

           SELECT

                         데이터1

                       , 데이터2

                       , 데이터3

                       , CASE WHEN 데이터2 IS NULL THEN 2

                                  WHEN 데이터3 IS NULL THEN 1 END as 정렬

            FROM 테이블1

           ) AS t

ORDER BY t.정렬, t.데이터1

도적님이 2009-04-27 12:07에 작성한 댓글입니다.
이 댓글은 2009-04-27 13:23에 마지막으로 수정되었습니다. Edit

답변 감사드립니다. ^^
왕초보라 답을 다 주셔도 실제로 적용시키는 것도 힘드네요 ㅠㅠ

여기서 테이블1 은 무엇을 의미하나요? 그리고, null 값에 데이타2 에는 2 를, 데이타3 에는 1를 넣어주는 건가요?

쿼리문 구조가, 

select 데이타1, 데이타2, 데이타3, A from #table
where A is null

union

select '', 0,0

union

select 데이타1, 데이타2, 데이타3, A form #table
where A is not null

이런식으로 되어 있습니다.

말씀해주신대로 적용을 시키려면,

컬럼을 추가시킨 테이블을 하나 더 만들어 놓고, 

select ( 데이타1, 데이타2, 데이타3, case문) as #table2 로 해 놓고,

원본 쿼리문에서 left outer join 하면 될까요? 아니면 union 을 한번 더 하는 것이 좋을까요?

nsh님이 2009-04-27 13:59에 작성한 댓글입니다.
이 댓글은 2009-04-27 14:00에 마지막으로 수정되었습니다. Edit

안녕하세요!

도적님의 글을 제가 대신 추가 답변 드려도 되는지 모르겠네요.

제가 볼때는 도적님께서 설명하신 테이블1은

님께서 질문하신 원천 테이블을 말하시는거구요.

말 그대로 '쿼리 시에 가공의 컬럼'은

실제 테이블 필드의 값이 아니라

쿼리후 결과 정렬을 위한 임시 값이죠.

일부러 그 값도 구분 가능토록 'as 정렬'이라고 표시하셨네요.

그러므로 질문하신 'null 값에 데이타2 에는 2 를, 데이타3 에는 1를 넣어주는 건가요?'

는 잘못된 질문이신거죠.


그리고 도적님께서 아주 적절하게 쿼리를 만들어주신 듯 한데,

테이블을 한개 또 추가해서 union을 과용해서 쓰시면 효율도 떨어지고

쿼리문도 복잡해 보일것 같아 nsh님의 두번째 질문은 적당치 않아 보이네요.


어떻게 적절한 답변이 되었는지 모르겠네요.

주제 넘게 끼어 들었다고 타박하지 않으셨으면 합니다.

그럼 수고하시고 즐건 하루 되세요! ^0^

비니&하니 아빠님이 2009-05-25 14:06에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
4741select 자동증가 값 [1]
유보현
2009-04-28
11721
4740커서를 사용해야할 것 같은데 잘 안됩니다. 도와주세요.
라이라
2009-04-27
5885
4739MSSQL로 만든 회원 목록 게시판을 postgreSQL기반으로 연동하고 싶은데 어떻게 해야되나요??
최준혁
2009-04-27
6841
4738데이타를 종류별로 정렬하기 [3]
nsh
2009-04-27
6772
4737쿼리에서 어떤 부분이 잘못됐는지 알려 주세요~ [1]
젤리
2009-04-26
5944
4736오라클처럼 rownum을 이용해서 [2]
이건영
2009-04-26
7482
4735긴급 질문 - 도와주세여...라이센스 때문에 MS SQL=> My SQL로
한진
2009-04-24
6648
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다