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 6817 게시물 읽기
No. 6817
데이타 가로 출력 문의
작성자
아바아바
작성일
2014-05-27 09:35
조회수
8,059

요구는 간단합니다.  아래와 같이 CODE, 별로 COL 필드에 값들을 가로로 출력해야 합니다.

문제는 코드값이 정해져있지 않고 COL 값은 CODE 별로 15개를 넘지 않습니다.

진정 고수분 알려주시면 은혜 잊지 않겠습니다..

CODE     COL

==============

AA1          01

AA1          02

A10         11

AA9         09

AA9         77

AA9       12

 

CODE   COL1    COL2    COL3 ................................COL15

============================================

AA1       01           02

A10      11

AA9      09           77            12

 

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

바로 아래아래 답이 있습니다만...

우욱님이 2014-05-27 09:53에 작성한 댓글입니다. Edit

아래 답변은 제 문의하고 조금 다른것 같네요...

다른 아시는 분 고수님 답변좀 부탁 합니다.

 

바라바라님이 2014-05-27 13:30에 작성한 댓글입니다. Edit

WITH t AS
(
SELECT 'AA1' code, '01' col
UNION ALL SELECT 'AA1', '02'
UNION ALL SELECT 'A10', '11'
UNION ALL SELECT 'AA9', '09'
UNION ALL SELECT 'AA9', '77'
UNION ALL SELECT 'AA9', '12'
)
SELECT *
  FROM (SELECT code, col
             , ROW_NUMBER() OVER(PARTITION BY code ORDER BY col) rn
          FROM t
        ) a
 PIVOT (MIN(col) FOR rn IN ( [1], [2], [3], [4], [5]
                           , [6], [7], [8], [9],[10]
                           ,[11],[12],[13],[14],[15]
                           ) ) a
;

마농(manon94)님이 2014-05-27 14:57에 작성한 댓글입니다.

-- 큿.. 늦었당.. 
-- 그래도 갯수만큼 나오게 한거라서.. 걍...

 

CREATE TABLE tblt ( 
code VARCHAR(10)
, col VARCHAR(10)
)
;
INSERT INTO tblt ( code, col )
         SELECT 'AA1', '01'
UNION ALL SELECT 'AA1', '02'
UNION ALL SELECT 'A10', '11'
UNION ALL SELECT 'AA9', '09'
UNION ALL SELECT 'AA9', '77'
UNION ALL SELECT 'AA9', '12'
;
DECLARE @colList VARCHAR(MAX)
;
SET @colList = ''
;
SELECT @colList = @colList + '[' + CAST( rn AS VARCHAR(MAX) ) + '],' 
FROM ( SELECT TOP(1) COUNT(*) AS cnt FROM tblt GROUP BY code ORDER BY COUNT(*) DESC ) AS mn
INNER JOIN ( SELECT ROW_NUMBER() OVER ( ORDER BY ( SELECT NULL ) ) AS rn FROM sys.all_columns  ) AS ns 
ON ns.rn <= mn.cnt
;
SET @colList = SUBSTRING( @colList, 1, LEN( @colList ) - 1 )
;
EXEC( 
'
SELECT *
FROM (
SELECT ROW_NUMBER() OVER( PARTITION BY code ORDER BY col ) AS rn, code, col
FROM tblt
) AS wrnTblt
PIVOT( MAX( col ) FOR rn IN ( ' + @colList + ' ) ) AS pv
)
;
우욱님이 2014-05-27 15:06에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
6821자식 로우 찾기 쿼리? [3]
우세연
2014-06-06
7373
6820주기적으로 속도 느림 [1]
이경미
2014-06-05
7931
6819DB 커넥션 실패.. 질문드립니다. [2]
최뭉뭉
2014-06-02
7341
6817데이타 가로 출력 문의 [4]
아바아바
2014-05-27
8059
6816SP1 -> SP2 업데이트 시 오류입니다.
이홍섭
2014-05-26
7466
6815합계를 구하는게 아니고 단순히 행을 열로 바꾸고 싶습니다. [1]
초보
2014-05-22
8207
6814문자열을 날짜 및/또는 시간으로 변환하지 못했습니다 도와주세요~~~ [7]
sql초보
2014-05-20
18411
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다