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 1910 게시물 읽기
No. 1910
세로로된 데이터를 가로로 출력하려면 어떻게 하죠?
작성자
초짜
작성일
2005-04-23 10:07
조회수
6,843

안녕하세요 SQL초짜가 고수님들께 도움 부탁드립니다.

쿼리를 날려 [표1]과 같은 데이터를 얻었습니다.

이걸 [표2]와 같이 가로로 뽑고 싶은데 어찌해야 할지 모르겠습니다.

업무구분과 고객코드의 종류는 가변적입니다.

아... 쿼리때문에 좌절하는 초보입니다.

도와주세요.. (__)

 

[표1]

업무구분 고객코드 수량

1 2001 162540.00
1 2222 1314638.00
1 2223 1413407.00
2 2223 1400.00
3 2223 1400.00
4 2223 .00
9 2001 162540.00
9 2222 1314638.00
9 2223 1414807.00
10 2223 100.00

 

[표2]

고객코드 업무구분1 업무구분2 업무구분3 ..... 업무구분9 업무구분10 .....

2001 162540.00 0 0 ..... 162540.00 0 .....
2222 1314638.00 0 0 ..... 1314638.00 0 .....

2223 1413407.00 1400.00 1400.00 ..... 1414807.00 100.00 .....





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

self join이 될듯..

id : 업무구분

code : 고객코드

num : 수량

 

select t1.code, t1.num, t2.num

from table_name t1, table_name t2

where t1.code=t2.code and t1.id<t2.id

 

하지만 너무 많다면 그냥 프로그램 내에서 처리하시는게 좋을듯 합니다.

왕초님이 2005-04-24 18:39에 작성한 댓글입니다.
이 댓글은 2005-04-24 18:40에 마지막으로 수정되었습니다. Edit

이러한 기능들을 MsSql2005에서는 Pivot이라는 명령으로 지원하고 있습니다.

그러나 Pivot의 내부적인 수행 쿼리를 보니

흔히들 크로스탭이라고 하는 형식이었습니다.

정확한 데이터의 확인없이 기 입력된 데이터와 출력 테이블의 형식을

샘플로 쿼리를 하나 만들어봤습니다.

/*

create table testTB
(업무코드 varchar(2),
고객코드 int,
수량 float)

 

--확인하시고 지우시기 바랍니다.

--drop table testTB

insert into testTB values('1', 2004, 162540.00)
insert into testTB values('1', 2222, 1314638.00)
insert into testTB values('1', 2223, 1413407.00)
insert into testTB values('2', 2223, 1400.00)
insert into testTB values('3', 2223, 1400.00)
insert into testTB values('4', 2223, .00)
insert into testTB values('9', 2001, 162540.00)
insert into testTB values('9', 2222, 1314638.00)
insert into testTB values('9', 2223, 1414807.00)
insert into testTB values('10', 2223, 100.00)

select * from testTB

*/


select 고객코드,
 sum(case when 업무코드= '1' then 수량 else 0 end) as 업무코드1,
 sum(case when 업무코드= '2' then 수량 else 0 end) as 업무코드2,
 sum(case when 업무코드= '3' then 수량 else 0 end) as 업무코드3,
 sum(case when 업무코드= '4' then 수량 else 0 end) as 업무코드4,
 sum(case when 업무코드= '5' then 수량 else 0 end) as 업무코드5,
 sum(case when 업무코드= '6' then 수량 else 0 end) as 업무코드6,
 sum(case when 업무코드= '7' then 수량 else 0 end) as 업무코드7,
 sum(case when 업무코드= '8' then 수량 else 0 end) as 업무코드8,
 sum(case when 업무코드= '9' then 수량 else 0 end) as 업무코드9,
 sum(case when 업무코드= '10' then 수량 else 0 end) as 업무코드10
from testTB
group by 고객코드
order by 1

 

 

고객코드        업무코드1                  업무코드2                  업무코드3                  업무코드4                  업무코드5                  업무코드6                  업무코드7                  업무코드8                  업무코드9                  업무코드10
----------- ---------------------- ---------------------- ---------------------- ---------------------- ---------------------- ---------------------- ---------------------- ---------------------- ---------------------- ----------------------
2001        0                      0                      0                      0                      0                      0                      0                      0                      162540                 0
2004        162540                 0                      0                      0                      0                      0                      0                      0                      0                      0
2222        1314638                0                      0                      0                      0                      0                      0                      0                      1314638                0
2223        1413407                1400                   1400                   0                      0                      0                      0                      0                      1414807                100

 

출력 샘플입니다.

 

업무코드가 증가 했을때의 자동으로 처리되는 것을 만드는 방법등은

그냥 님의 몫으로 남기겠습니다. ^^

 

여리님이 2005-04-25 10:19에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1913매개변수에 따라 다른 스토어프로시저 실행이 가능한가요? [1]
오세정
2005-04-25
2218
1912DB 이전 관련 문제.
김우섭
2005-04-25
2490
1911identity 칼럼의 값을 변경할 수 있나요? [1]
왕초
2005-04-24
2720
1910세로로된 데이터를 가로로 출력하려면 어떻게 하죠? [2]
초짜
2005-04-23
6843
1908TABLE COLUMN 정보 보기 [5]
김연성
2005-04-22
4466
1907테이블에는 저장이 되있는데 뷰에서는 없습니다.
저격수장금
2005-04-22
1592
1906ER Win 으로 제 로컬에 MS SQL Server 연결하려는데... [1]
고영훈
2005-04-22
1739
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다