MySQL 쿼리의 결과를 행당 키 => 값 결과 집합에서 키가 열 머리글이고 값이 해당 행 항목 인 결과 집합으로 바꿔야합니다. 기둥. 다음 데이터MySQL 쿼리 결과 바꾸기
주어즉
|------------------+-------------|
| CLASS_LESSON | ATTENDANTS |
|------------------+-------------|
| class1art | 1 |
| class1history | 1 |
| class2geography | 2 |
|------------------+-------------|
제가
|------------+---------------+------------------|
| class1art | class1history | class2geography |
|------------+---------------+------------------|
| 1 | 1 | 2 |
|------------+---------------+------------------|
로 변환하려는
클래스/공과 쌍 동적 있다고 가정한다; 언제든지 추가하거나 제거 할 수 있습니다. typical 'pivot table' sql 솔루션에서 제안 된대로 명시 적으로 호출하고 싶지 않습니다.
select
MAX(CASE WHEN class_lesson = 'class1art' THEN attendants ELSE 0 END) AS class1art,
MAX(CASE WHEN class_lesson = 'class1history' THEN attendants ELSE 0 END) AS class1history,
MAX(CASE WHEN class_lesson = 'class2geography' THEN attendants ELSE 0 END) AS class2geography,
MAX(CASE WHEN class_lesson = 'class7art' THEN attendants ELSE 0 END) AS class7art,
MAX(CASE WHEN class_lesson = 'class7history' THEN attendants ELSE 0 END) AS class7history
from
(select
group_concat(distinct class, lesson) as class_lesson,
count(*) as attendants
from
TableName
group by class , lesson
) a
여기에 샘플 데이터로 SQLFiddle 환경입니다. 저장 프로 시저를 사용하지 않고 이것이 가능합니까?
오, 내가 여기 있음을 본 적이해야 class2geography 당신이 1 원하는 왜 하나를 시도하십시오 : – Lmwangi
@Lmwangi가 원하는 해결책이 아니라고 정확히 설명했기 때문에이 답변을 선택한 이유를 이해할 수 없었습니다. – j4x