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 6686 게시물 읽기
No. 6686
DB 쿼리 질문 하나 올립니다.
작성자
김광현(cascade84)
작성일
2013-06-24 08:24
조회수
8,832
  Column.A Column.B Column.C
Row.A a d g
Row.A b e h
Row.A c f i
Row.B j k l
Row.B m n o
   

 

 

 
  Colum.D Column.E Column.F
Row.A a|d|g b|e|h c|f|i
Row.B j|k|l m|m|o  

 

각 로우별로 그룹을 지으면서 컬럼 A.B.C가 같이 묶이도록 할려면 어떻게 해야하나요?

row_number() over()을 써서 서브쿼리로 두고 max값을 가져오게 하면 한그룹을 검색할 때는 되는데

두그룹부터는 안되더라구요.

조언 좀 부탁드립니다.

 

이 글에 대한 댓글이 총 2건 있습니다.
CREATE TABLE tbl ( 
rowX NVARCHAR(10)
, cola NVARCHAR(10)
, colb NVARCHAR(10)
, colc NVARCHAR(10)
)
;
 
INSERT INTO tbl( rowX, cola, colb, colc )
          SELECT 'Row.A', 'a', 'd', 'g'
UNION ALL SELECT 'Row.A', 'b', 'e', 'h'
UNION ALL SELECT 'Row.A', 'c', 'f', 'i'
UNION ALL SELECT 'Row.B', 'j', 'k', 'l'
UNION ALL SELECT 'Row.B', 'm', 'n', 'o'
;
 
DECLARE @colList NVARCHAR(MAX)
;
SET @colList = STUFF( 
( SELECT DISTINCT N',[Column.' + NCHAR( UNICODE('C') + ROW_NUMBER() OVER ( PARTITION BY rowX ORDER BY cola, colb, colc ) ) + N']'
FROM tbl
FOR XML PATH('') )
, 1, 1, ''
)
;
 
EXEC (N'
SELECT rowX, ' + @colList + N'
FROM(
SELECT rowX
, cola + ''|'' + colb + ''|'' + colc AS rowGrp
, ''Column.'' + NCHAR( UNICODE(''C'') + ROW_NUMBER() OVER ( PARTITION BY rowX ORDER BY cola, colb, colc ) ) AS colName
FROM tbl
) AS tt
PIVOT (MAX(rowGrp) FOR colName IN ( ' + @colList + N') ) AS PVT 
' )
;
우욱님이 2013-06-24 10:44에 작성한 댓글입니다. Edit

감사합니다.

pivot 안쓰고 그냥 case when 써서 해결했습니다~

그룹별로 번호 1,2,3 정하는건 row_number() over() 안에 partition 정해서 해결했습니다~

신경써 주셔서 감사합니다~ 좋은 하루 되세요~

김광현(cascade84)님이 2013-06-24 11:12에 작성한 댓글입니다.
이 댓글은 2013-06-24 11:12에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
6689게임랭킹 [1]
박판규
2013-07-01
8129
6688쿼리 질문하나 드립니다. [3]
초보자
2013-06-25
8547
6687sa계정으로 다른 계정 비밀번호 얻어오기 [1]
궁금이
2013-06-25
8114
6686DB 쿼리 질문 하나 올립니다. [2]
김광현
2013-06-24
8832
6685합계 구하기 질문입니다.^^ [3]
쿼리문
2013-06-19
8925
6684LEFT JOIN 대체방법 [2]
박판규
2013-06-19
8266
6683[질문]group sum질문 드립니다. [1]
안동석
2013-06-18
8393
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다