2015-01-05 2 views
-2

보세요, 저는 이것을 mySQL에있는 데이터로 가지고 있습니다. 테이블 이름은 ===================================== "예약"행을 여러 coloumn으로 변환하는 방법은 무엇입니까?

입니다 =================

Mapel | Kelas | Tanggal | 나마 | 상태

======================================================= =========

Bhs. 인도 || 1A || 2015-01-14 || 아디 || x

Bhs. 인도 || 1A || 2015-01-14 || 아니 (Ani) || x

Bhs. 인도 || 1A || 2015-01-14 || 시시 || -

Bhs. 인도 || 1A || 2015-01-14 || 타라 || -

Bhs. 인도 || 1A || 2015-01-14 || 위나 || x

수학 || 1A || 2015-01-15 || 아디 || x

수학 || 1A || 2015-01-15 || 아니 (Ani) || -

수학 || 1A || 2015-01-15 || 시시 || -

수학 || 1A || 2015-01-15 || 타라 || -

수학 || 1A || 2015-01-15 || 위나 || x

Bhs. 인도 || 1A || 2015-01-15 || 아디 || x

Bhs. 인도 || 1A || 2015-01-15 || 아니 (Ani) || -

Bhs. 인도 || 1A || 2015-01-15 || 시시 || -

Bhs. 인도 || 1A || 2015-01-15 || 타라 || -

Bhs. 인도 || 1A || 2015-01-15 || 위나 || X

는 지금은 테이블이 "MAPEL"와 "KELAS"에 따라 쇼를 할 내가 Mapel = 'BHS을 선택합니다.인도 '와 KELAS ='1A '는 ==============================이

같은 테이블을 보여줄 것 ==========================

Kelas | 나마 | 2015-01-14 | 2015-01-15 |

============================================== ========

1A || 아디 || x || x

1A || 아니 (Ani) || x || -

1A || 시시 || - || -

1A || 타라 || - || -

1A || 위나 || x || 동적으로 테이블의 실제 내용 MySQL은 동적 SQL을 사용하는 것입니다 그것을 할 수있는 유일한 방법에 따라 날짜를 가져 오기하려면 X

+3

시도하셨습니까? –

+0

실제로 2 열이라면 'CROSS-TAB'을 사용하십시오. –

답변

0

SET @sql = NULL; 

SELECT GROUP_CONCAT(DISTINCT CONCAT(
    'MAX(CASE WHEN tanggal = ''', tanggal, 
    ''' THEN status END) `', tanggal, '`')) 
    INTO @sql 
    FROM schedule 
WHERE mape = 'Bhs. Indo' 
    AND kelas = '1A' 
ORDER BY tanggal; 

SET @sql = CONCAT(
    'SELECT kelas, nama, ', @sql, 
    ' FROM schedule ', 
    ' WHERE mape = ''Bhs. Indo''', 
    ' AND kelas = ''1A''', 
    ' GROUP BY kelas, nama' 
); 

PREPARE stmt FROM @sql; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 

출력 :

 
| KELAS | NAMA | 2015-01-14 | 2015-01-15 | 
|-------|------|------------|------------| 
| 1A | Adi |   x |   x | 
| 1A | Ani |   x |   - | 
| 1A | Sisi |   - |   - | 
| 1A | Tara |   - |   - | 
| 1A | Wina |   x |   x | 

여기에 SQLFiddle 데모

다음과 같이 포장 할 수 있습니다. 클라이언트 코드에서 작업을 단순화하는 저장 프로 시저.

+0

네 도움이 많이 있습니다. 도움 주셔서 감사합니다. –

관련 문제