2014-06-24 3 views
0

MySQL에서 테이블을 피벗 (pivot)하려고하므로 행 값을 열 헤더로 변환하여 보고서에서 읽기 쉬운 테이블로 사용할 수 있습니다. 유일한 것은 모든 있도록 NULL 값을 제거하는 것입니다 왼쪽피벗 테이블에서 null 값을 제거하는 방법은 무엇입니까?

+------------+------+------+---------+ 
| Date  | RS1 | RS2 |  RS3 | 
+------------+------+------+---------+ 
| 2007-02-26 | 12 | NULL | NULL | 
| 2007-04-12 | 8 | NULL | NULL | 
| 2007-07-31 | 9 | NULL | NULL | 
| 2008-02-07 | 12 | NULL | NULL | 
| 2008-11-06 | 20 | NULL | NULL | 
| 2010-03-04 | 8 | NULL | NULL | 
| 2010-12-16 | 7 | NULL | NULL | 
| 2011-01-24 | 20 | NULL | NULL | 
| 2011-03-22 | 7 | NULL | NULL | 
| 2012-11-12 | 19 | NULL | NULL | 
| 2007-02-26 | NULL | 18 | NULL | 
| 2007-04-12 | NULL | 2 | NULL | 
| 2007-07-31 | NULL | 4 | NULL | 
| 2008-02-07 | NULL | 10 | NULL | 
| 2008-11-06 | NULL | 8 | NULL | 
| 2010-03-04 | NULL | 6 | NULL | 
| 2010-12-16 | NULL | 6 | NULL | 
| 2011-01-24 | NULL | 5 | NULL | 
| 2011-03-22 | NULL | 11 | NULL | 
| 2012-11-12 | NULL | 13 | NULL | 
| 2007-02-26 | NULL | NULL |  15 | 
| 2007-04-12 | NULL | NULL |  6 | 
| 2007-07-31 | NULL | NULL |  5 | 
| 2008-02-07 | NULL | NULL |  8 | 
| 2008-11-06 | NULL | NULL |  11 | 
| 2010-03-04 | NULL | NULL |  1 | 
| 2010-12-16 | NULL | NULL |  19 | 
| 2011-01-24 | NULL | NULL |  14 | 
| 2011-03-22 | NULL | NULL |  15 | 
| 2012-11-12 | NULL | NULL |  10 | 
+------------+------+------+---------+ 
30 rows in set (0.00 sec) 

: 여기에 (데이터 비트를 난독 화되었지만 개념은 여전히 ​​동일) 지금까지 나오는 것을의 샘플입니다 열은 날짜별로 서로 정렬됩니다. 즉, 모든 열과 해당 값이 정렬되도록 열 1, 열 2에서 처음 10 개 및 열 10에서 마지막 20 개 행을 삭제하고 열 3에서 처음 20 개를 삭제합니다.

MySQL에서이 작업을 수행하는 쉬운 방법이 있습니까?

+0

답 괜찮 았는데 모두; 문제의 테이블이 이미 만들어 졌기 때문에 valex가 약간 쉬웠습니다. 정말 고마워! – djmordigal

답변

0

이 시도 :

SELECT Date, 
     MAX(RS1), 
     MAX(RS2), 
     MAX(RS3) 
FROM Table1 
GROUP BY Date 

SQLFiddle demo

0

당신은 새로운 테이블을 생성 날짜별로 그룹화 동안 데이터를 다시 삽입 할 수 있습니다

INSERT INTO mynewtable (date,RS1,RS2,RS3) 
     SELECT Date,MAX(RS1),MAX(RS2),MAX(RS3) 
     FROM myoldtable GROUP BY Date 
관련 문제