예를 들어 지금 데이터가 이렇게 있다면
no | p_name|
==========================
1 AAA
1 BBB
1 CCC
1 DDD
==========================
이런식으로 출력되게 가능한가요?
no | p_name|
=====================================
1 AAA, BBB, CCC, DDD
=====================================
혹은
no | p_name1 |p_name2 |p_name3 |p_name4 |
===================================================
1 AAA BBB CCC DDD
===================================================
윈2000server에 MSSQL2000이라 문법에 제한도 많고 초짜인 저에게 쿼리짜는게 쉽지가 않네요.
검색해보니 행 열 변환하려면 PIVOT이라고 있던데 이게 숫자컬럼에만 먹히는 것 같던데 현재 테이블은 모두 캐릭터형이라 안 되더라구용..
도와주세요~~
Comment 4
-
건우아빠
2013.07.04 11:22
http://www.sqler.com/141578 -
아킬레스
2013.07.04 16:01
답변 굉장히 많이 도움되었습니다. 감사합니다.
위 글에서 3번 방법이 가장 깔끔해보이던데 지금 쓰고 있는게 SQL2000이라 FOR XML PATH가 안 먹히네요..
그리고 2번 방법으로 했을시엔 name이 1개 밖에 없으면 NULL값으로 나오구요.
SQL2000에서 FOR XML PATH를 대체할 만한 무언가가 있을까요?
-
건우아빠
2013.07.04 11:35
보통 많이 쓰는 방법입니다.
컬럼으로 분리 시킬때 고정 갯수일때는 이게 편하구요..
select no
, max(case when p_name = 'AAA' then p_name end ) [p_name1]
, max(case when p_name = 'BBB' then p_name end ) [p_name2]
, max(case when p_name = 'CCC' then p_name end ) [p_name3]
, max(case when p_name = 'DDD' then p_name end ) [p_name4]
from 테이블
group by no
디비 버젼을 빨리 업그레이드 하시는게
여러측면에서 비용 절감이 됩니다.. standard면 그렇게 비용이 비싸지 않습니다..
유지보수나 sql 작성시간이나 쿼리속도에 많은 향상이 있지 않을까 봅니다.
2000에서는 지원이 안되는 기능 때문에 복잡하게 쿼리를 작성해야했던것을 손쉽게 구현이 가능 합니다..
-
시스템
2013.07.04 17:12
경력이 많으실것 같은신데 저의글에도 답변을 주시면 안될까요