수색…


비고

MySQL에서 피벗 쿼리 생성은 GROUP_CONCAT() 함수에 의존합니다. 피벗 쿼리의 열을 만드는 식의 결과가 클 것으로 예상되는 경우 group_concat_max_len 변수의 값을 늘려야합니다.

set session group_concat_max_len = 1024 * 1024; -- This should be enough for most cases

피벗 쿼리 만들기

MySQL은 피벗 쿼리를 생성하는 내장 된 방법을 제공하지 않습니다. 그러나 준비된 문을 사용하여 만들 수 있습니다.

tbl_values 가정합니다.

신분증 이름 그룹
1 피트 에이 10
2 피트 20
남자 에이 10

요청 : 각 Name 대한 Value 의 합계를 표시하는 쿼리를 만듭니다. Group 은 열 머리글이어야하며 Name 은 행 머리글이어야합니다.

-- 1. Create an expression that builds the columns
set @sql = (
    select group_concat(distinct 
        concat(
            "sum(case when `Group`='", Group, "' then `Value` end) as `", `Group`, "`"
        )
    ) 
    from tbl_values
);

-- 2. Complete the SQL instruction
set @sql = concat("select Name, ", @sql, " from tbl_values group by `Name`");

-- 3. Create a prepared statement
prepare stmt from @sql;

-- 4. Execute the prepared statement
execute stmt;

결과:

이름 에이
남자 10 없는
피트 10 20

중요 : 더 이상 필요없는 준비 문을 할당 해제합니다.

deallocate prepare stmt;

SQL Fiddle 예제



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow