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 5954 게시물 읽기
No. 5954
Query 질문 드립니다...
작성자
쪼렙
작성일
2011-09-29 21:35ⓒ
2011-09-30 07:19ⓜ
조회수
6,835

 안녕하세요. 

Query가 잘 안풀려서 질문드립니다..

지금 현재 결과값이 다음과이 나오는것을

A컬럼 B컬럼
AA 1
AA 1,2
BB 1,2
BB 1,3

이렇게 가져오고 싶은데요 잘 안되네요 ㅠ 좀 도와주세요...

A컬럼 B컬럼
AA 1,2
BB 1,2,3

 DB는 2008 R2입니다ㅜ.

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

CREATE TABLE [dbo].[NUMS](
[ID] [int] NOT NULL,
CONSTRAINT [PK_NUMS] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

이 NUMS 라는 테이블에는 문자열에 길이에 따라서 ID를 적당히 생성하시면 되는데

저는 200까지만 가정해서 넣었습니다

ID
 
1
 
2
...
200

 

A컬럼 B컬럼
AA 1
AA 1,2
BB 1,2
BB 1,3

이 테이블을 tb 라고 가정하면

    
    
   
    select A컬럼,SUBSTRING( REPLACE(rtrim(( select ',' + convert(varchar(5),ELEMENT)
    from    (select distinct A컬럼 ,convert(int,ELEMENT) as ELEMENT
    from tb cross apply
   ( SELECT substring (B컬럼, ID, CHARINDEX(',',B컬럼+',',ID)-ID) AS 'ELEMENT'
    FROM   NUMS
    WHERE  ID <= LEN(B컬럼) AND SUBSTRING (',' + B컬럼,ID,1) = ','  ) as temp2) as temp3
    where temp3.A컬럼 = temp1.A컬럼 for XML path (''))),'',', '),2,999) as B컬럼
    from
    (select distinct A컬럼 from tb) as temp1
    group by A컬럼

이쿼리를 실행하시면  결과가 나옵니다

 

서정록님이 2011-10-27 14:50에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
5959쿼리 질문입니다 고수님들 도와주세요 [2]
송기백
2011-10-07
7197
5956GROUP BY 관련 질문입니다. [1]
최명근
2011-10-04
6135
5955sql 저장프로시져들만 백업 및 복원방법? [1]
있나없는거같은데
2011-10-01
10060
5954Query 질문 드립니다... [1]
쪼렙
2011-09-29
6835
5953멀티 쓰레드에서 데이터 무결성 보장을 어떻게 하나요? [1]
김민식
2011-09-28
6574
59522개의 필드에 순번매기기 방법좀 알려주세요. [1]
권순환
2011-09-25
7023
5950링크드 서버연결후 조회시 데이터를 강제로 짤린것이 조회가안됩니다.
권순환
2011-09-22
6469
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다