MySQL
피벗 쿼리
수색…
비고
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;
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow