2013-09-21 4 views
2

행 이름을 지정하지 않고 Case를 사용하여 동적으로 키 - 값 테이블을 변환하려면 어떻게해야합니까? 예를 들어
이 나는이 테이블 key_value라는 이름의 한 : 내가 사용하고필드를 지정하지 않고 행을 동적으로 열로 변환

name fname jobs............................n 
john akbar sofware engineer...........n 

:

id  key  value 
1  name  john 
2  fname akbar 
3  jobs  Software enginer 
. . . 
. . . 
. . . 
. . . 
. . . 
n n n 

내가 좋아하는 키 이름을 지정하지 않고 컬럼에 동적으로 모든 행을 변환 할

Max(Case WHEN key='name' THEN value END) AS name 

이 쿼리에서는 키를 알고 있습니다.
필드를 모르고 필드가 몇 개인 지 모르겠습니까?

필자는 입력란을 지정하지 않고도이를 모두 동적으로 변환하려고합니다.

+0

, 당신은 당신이 열 머리글로 행 값을 표시 할 의미합니까? –

+0

예 mr Ruben 키를 해당 속성으로 헤더 및 값으로 사용합니다. –

답변

5

이는 돌아 오는 길에 나는 너의 대답을 수정
SQL Query fields as columns
도 내 질문에 있었고, 난 그것이 나에게했던 것처럼 도움이되기를 바랍니다!

'변환'으로
SET @sql = NULL; 
SELECT 
    GROUP_CONCAT(DISTINCT 
    CONCAT(
     'MAX(IF(a.xvalue = ''', 
     xvalue, 
     ''', a.xvalue, NULL)) AS ', 
     xkey 
    ) 
) INTO @sql 
FROM key_value; 


SET @sql = CONCAT('SELECT ', @sql, ' 
        FROM key_value a 
        LEFT JOIN key_value AS b 
        ON a.id=b.id'); 

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

SQL Fiddle

+0

thanx for replaying! 이게 내가 원하는거야, 너는 내 생명을 구했어, 신의 축복이있어, 다시 너에게 감사 해. –

+0

도와 줘서 기뻐! –