(mysql) 다중 ROW를 단일행( 칼럼으로 구분하여 )으로 표현하고 싶어요. 1 2 776

by 펠코스 [2015.11.04 11:40:12]


안녕하세요 데이터베이스를 열심히 공부중인 초보입니다.

다름이 아니라 체력 측정 데이터 관련 DB 설계 중 궁금한 것이 있어서요.

다중 ROW로 검색된 데이터를 단일행으로 표현하고 싶은데 통 모르겠네요 ㅡㅡ;;;

DB는 MYSQL 사용중이구요.

일단 측정 데이터 테이블은 아래와 같은 형태(표-1) 입니다.

(표-1)

측정일 사용자번호 측정 항목 데이터
11-04 1 A a1
11-04 2 A a2
11-04 1 C c1
11-04 4 B b4
11-04 1 B b1
11-04 4 C c4

 

이를 아래와 같은 형태(표-2)로 표현하려고 합니다.

(표-2)

측정일 사용자번호 A B C
11-04 1 a1 b1 c1
11-04 2 a2    
11-04 3   b4 c4

 

측정 데이터들은 한 사람에 대해 특정 측정일에 측정한 한 항목 데이터를 하나의 ROW로 저장합니다.

홍길동이라는 사람이 11월 04일에 A,B,C 항목을 측정하였다면 3개의 ROW가 되는 것이죠.

표-1 을 표-2와 같은 형태로 쿼리를 사용하여 가능한지요?

찾아 보니 union all을 사용거나 concat을 사용할 수 있을 것 같은데

1. concat의 경우 구분자를 이용하여 구분 후 다시 파싱을 해야하고

2. union all의 경우 항목이 맞아 질 경우 속도 부분에서 과연 올바르게 사용하는 것인지 .. 잘 .. 모르겠습니다. ㅠㅠ

 

고수님들 조언 부탁드려요.

 

 

 

 

by 마농 [2015.11.04 12:29:48]
SELECT 측정일, 사용자번호
     , MIN(CASE 측정항목 WHEN 'A' THEN 데이터 END) A
     , MIN(CASE 측정항목 WHEN 'B' THEN 데이터 END) B
     , MIN(CASE 측정항목 WHEN 'C' THEN 데이터 END) C
  FROM 테이블
 GROUP BY 측정일, 사용자번호
;

 


by 펠코스 [2015.11.05 10:19:10]

답변 감사합니다.

이 방법이 있었군요 ㅡㅡ;;;

역시 Group은 사용하는 것이 맞네요. ㅎㅎ

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입