PIVOT 또는 GROUP BY 기술을 사용하여 MySQL 테이블의 행을 열로 변환합니다.
데이터 변환 기술인 PIVOTING은 행 데이터를 열로 재배열합니다. 이 경우 목표는 타임스탬프와 같은 특정 열을 기준으로 데이터를 그룹화하고 각 데이터 값을 별도의 열로 표시하는 것입니다.
기존 PIVOT 구문 대신 MySQL에서는 널리 지원되지 않는 SUM() 함수를 CASE 문과 함께 사용하여 원하는 결과를 얻을 수 있습니다.
<code class="sql">SELECT d.data_timestamp , SUM(CASE WHEN data_id = 1 THEN data_value ELSE 0 END) AS 'input_1' , SUM(CASE WHEN data_id = 2 THEN data_value ELSE 0 END) AS 'input_2' ... , SUM(CASE WHEN data_id = 20 THEN data_value ELSE 0 END) AS 'input_20' FROM data GROUP BY data_timestamp ORDER BY data_timestamp ASC</code>
또는 IF 문 동일한 결과를 얻기 위해 SUM() 함수 내에서 사용할 수 있습니다.
<code class="sql">SELECT d.data_timestamp , SUM(IF(data_id = 1, data_value, 0)) AS 'input_1' , SUM(IF(data_id = 2, data_value, 0)) AS 'input_2' ... , SUM(IF(data_id = 20, data_value, 0)) AS 'input_20' FROM data GROUP BY data_timestamp ORDER BY data_timestamp ASC</code>
또 다른 접근 방식은 여러 JOIN 문을 사용하여 원하는 출력을 생성하는 것입니다.
<code class="sql">SELECT d.data_timestamp , d01.data_value AS 'input_1' , d02.data_value AS 'input_2' ... , d20.data_value AS 'input_20' FROM (SELECT DISTINCT d.data_timestamp FROM data ) AS d LEFT JOIN data AS d01 ON d01.data_timestamp = d.data_timestamp AND d01.data_id = 1 LEFT JOIN data AS d02 ON d02.data_timestamp = d.data_timestamp AND d02.data_id = 2 ... --- 20 JOINs LEFT JOIN data AS d20 ON d20.data_timestamp = d.data_timestamp AND d20.data_id = 20 ORDER BY d.data_timestamp ASC</code>
이러한 기술을 활용하면 GROUP BY를 사용하여 MySQL에서 쿼리 결과를 쉽게 피벗할 수 있습니다.
위 내용은 GROUP BY를 사용하여 MySQL에서 쿼리 결과를 피벗하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!